2017-10-17 72 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