2017-09-28 13 views
0

私はまだ正確に何を尋ねるのかについて完全には分かっていないので、これがうまくいけば謝ります。私が見つけた他の質問は、すでにJSONでオブジェクト配列を受け取っている人に関係しています。配列またはリストへのJSONオブジェクトのデシリアライズ

JSON文字列は、過去にオブジェクトに簡単に変換される配列として返されたときしか処理していないときに、オブジェクトとしてサードパーティから返されます。

var success = JsonConvert.DeserializeObject<RootObjectClass>(result); gives me a `Cannot deserialize the current JSON object (e.g. {\"name\":\"value\"}) into type 'System.Collections.Generic.List` 

私は配列にこれを変換する必要があり、そうであればどのように、オブジェクトを個別にプロパティと同じ名前が付けられて、値を「contact_id」?

これ以外の場合、このJSONから連絡先のリストを取得する方法のベストプラクティスの正しい方向に私を指摘できますか。

JSONの構造を以下に示します。

{ 
    "status": true, 
    "error_code": "", 
    "error_message": "", 
    "data": { 
     "693": { // Contact obj, always the same as contact_id 
      "contact_id": "693", 
      // removed lots of properties for brevity 
      "real_name": "Mike Hunt", 
      "telephone": "01280845867", 
      "email": "[email protected]" 
     }, 
     "767": { 
      "contact_id": "767", 
      "real_name": "Peter File", 
      "telephone": "02580845866", 
      "email": "[email protected]" 
     } 
    } 
} 

クラス構造

[Serializable()] 
[DataContract] 
public class RootObjectClass 
{ 
    [DataMember()] 
    public bool status { get; set; } 
    [DataMember()] 
    public string error_code { get; set; } 
    [DataMember()] 
    public string error_message { get; set; } 
    [DataMember()] 
    public DataClass data { get; set; } 
} 
[Serializable()] 
[DataContract] 
public class DataClass 
{ 
    [DataMember] 
    public Contact contact { get; set; } 
} 
+0

逆シリアル化を'dynamic'データ型です。次に、その属性に簡単にアクセスできます –

+0

ありがとう、ありがとうございます – PurpleSmurph

+0

'RootObjectClass'に' DataClass'の配列が必要ないのですか? – Richard

答えて

2

あなたはdictionarydataプロパティをデシリアライズすることができます

[Serializable()] 
[DataContract] 
public class RootObjectClass 
{ 
    [DataMember()] 
    public bool status { get; set; } 
    [DataMember()] 
    public string error_code { get; set; } 
    [DataMember()] 
    public string error_message { get; set; } 
    [DataMember()] 
    public Dictionary<string,Contact> data { get; set; } 
} 

その後、あなたは、このような連絡先を選択することができます

var contacts = rootObject.data.Values.ToList(); 
+0

それを試していただきます、ありがとうございます。 – PurpleSmurph

+0

はい!私の神、顔を見て、ありがとう! – PurpleSmurph

関連する問題