我有以下擴展方法,我用它來反序列化json在c#中。反序列化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
錯誤似乎是在您的消息列表/數組,您可以嘗試將屬性設置爲'公開列表錯誤{get;組; }' –
TiGreX
@TiGreX既不是列表或數組,也不是直接替換 –