2016-05-17 4 views
0

を使用して値の順序私はWCFサービスPOSTメソッド以下のように持っている:私はポスト応答でJSON文字列を受け取っJSONオブジェクトのキークラスオブジェクトのC#

public class CResults 
    { 
     public string studentname { get; set; } 
     public string studentid { get; set; } 
     public string telugu { get; set; } 
     public string hindi { get; set; } 
     public string english { get; set; } 
     public string mathematics { get; set; } 
     public string science { get; set; } 
     public string social { get; set; } 
     public string totalresult { get; set; } 

    } 

:ここ

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedResponse, ResponseFormat = WebMessageFormat.Json, 
RequestFormat = WebMessageFormat.Json, UriTemplate = "GetResult/{schoolid}")] 
[return: MessageParameter(Name = "ExamResult")] 
CResults GetExamResult(CExamResultQuery pObj, string schoolid); 

はCResultsクラスです私のクライアントでは、しかし、キー(値)の順序は異なります。ここではJSONは次のとおりです。

"{\"ExamResult\":{\"english\":\"80\",\"hindi\":\"80\",\"mathematics\":\"80\",\"science\":\"80\",\"social\":\"80\",\"studentid\":\"50\",\"studentname\":\"Ashok\",\"telugu\":\"80\",\"totalresult\":\"PASS\"}}" 

私はJSONのクラス 変数の順序として、アルファベット順ではない方法として受信ご覧ください。 JSONの注文をクラスと同じようにするにはどうしたらいいですか?ここで

は、私はJSON文字列からキーに&値を抽出する方法である

JSONObject jsonRootObject = new JSONObject(jsonData); 

      JSONObject innerObj = jsonRootObject.getJSONObject("ExamResult"); 

       Iterator<?> keys = innerObj.keys(); 
       while (keys.hasNext()) { 
        String key = (String) keys.next(); 
        mActivity.updateResultsTable(""+key+": "+innerObj.get(key).toString()); 
       // Log.i("testExtrace JSONObject", "key " + key + ": value " + innerObj.get(key).toString()); 

       } 

私は、JSONの値は以下のようにキーを使用して抽出することができます知っている:私はしたかった

String studentName= jsonRootObject.getString("studentname"); 

WCFクラスのみの変更、これは私が期待する順序で任意のJSONを抽出するのに役立ちます。サポート

+0

なぜ抽出物の順序?値を抽出した後(何らかの順序で)、あなたは何か他の方法でそれらを並べ替えることを妨げるでしょうか? –

+0

@BrianRogers私は私が抽出できることを知っています。それがC#でどのように行われるのか知りたいです。 – Ashok

+0

'[DataMember(Order = X)]'を使うことができます。 [JSON出力のプロパティの順序を制御するにはどうすればよいですか?](https://stackoverflow.com/questions/9287158/how-do-i-control-the-order-of-properties-in-my-json)を参照してください。 -出力)。しかし、[JSON標準](http://www.json.org/)によると、JSONオブジェクトは*名前/値のペア*の順序付けられていないセットなので、プロパティの順序に依存するコードを非標準です。 – dbc

答えて

1

あなたは以下のようなデータメンバー(受注)属性を使用することができるため

ありがとう:

[DataContract] 
public class CResults 
{ 
    [DataMember(Order = 0)] 
    public string studentname { get; set; } 
    [DataMember(Order = 1)] 
    public string studentid { get; set; } 
    [DataMember(Order = 2)] 
    public string telugu { get; set; } 
    [DataMember(Order = 3)] 
    public string hindi { get; set; } 
    [DataMember(Order = 4)] 
    public string english { get; set; } 
    [DataMember(Order = 5)] 
    public string mathematics { get; set; } 
    [DataMember(Order = 6)] 
    public string science { get; set; } 
    [DataMember(Order = 7)] 
    public string social { get; set; } 
    [DataMember(Order = 8)] 
    public string totalresult { get; set; } 

} 
関連する問題