自定义JSON输出
问题描述:
我从一个C#Web服务的输出如下:自定义JSON输出
{"CallResult":[{"CompanyId":"AAA900134-904","CompanyName":"MID"}]}
我所要的输出只包含JSON数组类似如下:
[{"CompanyId":"AAA900134-904","CompanyName":"MID"}]
我不知道如何自定义输出。我是否必须手动返回一个字符串并自定义JSON,或者有其他方法吗?谢谢。
答
我想出了一个解决方案。
[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
答
没有更多的信息,如实际数据为例(这个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。
显示我们的数据模型通过您的API –
返回什么是使用服务器的实现代码? Web API? WCF? – Suyog