私はC#でJSONをデシリアライズするために使用し、次の拡張メソッドを持っています。デシリアライズJSON - ネストされたパラメータを持つ問題
public static T DeserializeJson<T>(string response)
where T : class
{
var s = new DataContractJsonSerializer(typeof(T));
try
{
using (var ms = new MemoryStream())
{
byte[] data = System.Text.Encoding.UTF8.GetBytes(response);
ms.Write(data, 0, data.Length);
ms.Position = 0;
return (T)s.ReadObject(ms);
}
}
catch
{
return default(T);
}
}
これは正しく動作します。
データコントラクトは、次のようになります。
[DataContract]
public class ResponseProps
{
[DataMember(Name = "status", Order = 0)]
public string ResponseCode { get; set; }
[DataMember(Name = "lead_id", Order=1)]
public string LeadId { get; set; }
[DataMember(Name = "price", Order=2)]
public decimal Price { get; set; }
[DataMember(Name = "redirect_url", Order = 3)]
public string RedirectUrl { get; set; }
[DataMember(Name = "errors", Order = 4)]
public string Errors { get; set; }
}
は、しかし、特定の状況で、私はエラーを取得し、直列化復元は失敗します。
この問題は、私が明らかに正しく処理していないいくつかの応答でデータが返送されたために発生しているようです。ここで問題を引き起こしているように見えるのデータがあります:
{"status":4,"errors":[{"Duplicate Application":"Duplicate Application"}]}
誰もが、私はこの問題を解決する方法として、アイデアを得ましたか。
なぜ、オハイオ州なぜ、人は「私はエラーを取得する」を書き込む代わりに、実際のエラーメッセージを貼り付けておくのですか?あなたが5年間SOのメンバーになってきたので、あなたはそれ以上に知っているはずです!ああ、あなたの[mcve]は最小でも完全でも検証可能でもありません。それを修正してください。 (そうでなければ良い質問です!) – Heinzi
あなたのメッセージのリスト/配列にエラーがあるようですが、そのプロパティをpublicリストに設定しようとするとエラーが発生します。セット; } ' –
TiGreX
@TiGreXリストや配列はどちらも直接置換として動作しないようです –