我從一個C#Web服務的輸出如下:自定義JSON輸出
{"CallResult":[{"CompanyId":"AAA900134-904","CompanyName":"MID"}]}
我所要的輸出只包含JSON數組類似如下:
[{"CompanyId":"AAA900134-904","CompanyName":"MID"}]
我不知道如何自定義輸出。我是否必須手動返回一個字符串並自定義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