例の後に例を見てみると、私の試行はうまくいっていません。C#でJSONを逆シリアル化する際の問題
私は、このJSONリターンをデシリアライズしようとしている:ここで
{
"status": "success",
"data": {
"result": "match",
"id_user": 26564,
"dob_match": null,
"first_name_match": null,
"last_name_match": null
},
"code": 200
}
は私のJSONオブジェクトクラスの宣言です:私のストリーム方式で
[DataContract]
internal class DccCoachApi
{
[DataMember]
public string result { get; set; }
public string id_user { get; set; }
public string dob_match { get; set; }
public string first_name_match { get; set; }
public string last_name_match { get; set; }
}
、私streamRead変数が充填されている。 {"status":"success","data":{"result":"match","id_user":26564,"dob_match":null,"first_name_match":null,"last_name_match":null},"code":200}
方法1はコチラIDを入力しません:
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(streamRead)))
{
// Deserialization from JSON
var deserializer = new DataContractJsonSerializer(typeof(DccCoachApi));
var dccObj = (DccCoachApi)deserializer.ReadObject(ms);
coachId = dccObj.id_user;
}
もない方法2:
DccCoachApi coach = new JavaScriptSerializer().Deserialize<DccCoachApi>(streamRead);
coachId = coach.id_user;
もないメソッド3:
JavaScriptSerializer js = new JavaScriptSerializer();
DccCoachApi dccObj = js.Deserialize<DccCoachApi>(streamRead);
coachId = dccObj.id_user;
もないメソッド4:私が引くときに生成されます
dynamic dccObject = js.Deserialize<dynamic>(streamRead);
coachId = dccObject["id_user"];
ハードエラーメソッド4から直接外した値は次のとおりです。 System.Collections.Generic.KeyNotFoundException:指定されたキーが辞書に存在しませんでした。 System.Collections.Generic.Dictionary`2.get_Item(TKeyキー)
メソッド1-3は、ハードエラーを発生させませんが、データなしでcoachIdを設定します。
誰かが私が間違っていることを教えていただけますか?
あなたは最初のプロパティではなくすべてのプロパティに '[DataMember]'を追加しようとしましたか? –
JSON辞書には、 'status'、' data'、 'code'という3つのキーがあります。 'DccCoachApi'クラスには何も表示されません。そのクラスは 'data'メンバーにとって適切な型であるようです。 – smarx
JSONをクリップボードにコピーし、VS **編集メニューから** ** **貼り付けを選択** - ** JSONをクラスとして貼り付け** – Plutonix