2017-10-17 16 views
-1

私はC#のWebサービスからの次の出力があります。私は唯一の出力は次のようなJSONの配列を含んでいたいカスタマイズJSON出力

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

を:

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

出力をカスタマイズする方法がわかりません。文字列を返してJSONを手動でカスタマイズする必要がありますか、別の方法がありますか?ありがとう。ここでは、このような実際のデータの一例として、より多くの情報がない

+1

BodyStyle = WebMessageBodyStyle.Wrapped 

を変更しなければならなかった

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

は私達にあなたのAPIサーバが使用して実装されて何 –

+0

によって返されたデータモデルのコードを表示しますか? Web API? WCF? – Suyog

答えて

0

解決策を見つけました。私は

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; } 
} 

その後、

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に格納のリストが含まれている場合は、コードに簡単な修正を次のようにusing System.Web.Script.Serialization;と一緒に、あなたはJSONをデシリアライズすることができますそれに対応することができます。 json文字列を修正するシナリオは存在しません(常にクリーンな方法があります)。

参考:&例はJavaScriptSerializer Classとなります。