2017-10-17 109 views
-1

我从一个C#Web服务的输出如下:自定义JSON输出

{"CallResult":[{"CompanyId":"AAA900134-904","CompanyName":"MID"}]} 

我所要的输出只包含JSON数组类似如下:

[{"CompanyId":"AAA900134-904","CompanyName":"MID"}] 

我不知道如何自定义输出。我是否必须手动返回一个字符串并自定义JSON,或者有其他方法吗?谢谢。

+1

显示我们的数据模型通过您的API –

+0

返回什么是使用服务器的实现代码? Web API? WCF? – Suyog

回答

0

我想出了一个解决方案。

[WebInvoke(Method = "GET", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Bare, 
     UriTemplate = "/CallResult/{username}/{company}")] 
    CallResult_Result[] CallResult(string username, string company); 

我不得不改变

BodyStyle = WebMessageBodyStyle.Wrapped 

BodyStyle = WebMessageBodyStyle.Bare 
0

没有更多的信息,如实际数据为例(这个JSON是指只有1个对象),这里是我可以建议:

创建2种自定义类如下:

public class CallResultClass 
{ 
    public List<InnerClass> CallResult { get; set; } 
} 

public class InnerClass 
{ 
    public string CompanyId { get; set; } 
    public string CompanyName { get; set; } 
} 

然后,与using System.Web.Script.Serialization;一起,你可以反序列化JSON的如下:

string json = "{\"CallResult\":[{\"CompanyId\":\"AAA900134-904\",\"CompanyName\":\"MID\"}]}"; 

JavaScriptSerializer js = new JavaScriptSerializer(); 
var callres = (CallResultClass)js.Deserialize(json, typeof(CallResultClass)); 

var companyInfo = callres.CallResult; 

如果你的JSON包含CallResults的列表,简单的修改代码可以适应这一点。没有任何情况下修改json字符串是可行的(总是有一个干净的方法)。

仅供参考&示例读取JavaScriptSerializer Class