[英]json to C# object how to deserialize JSON
如何在 C# 中反序列化這個 json 字符串
{ “會計師”:{ “sysid”:“1”,“first_name”:“Test”,“last_name”:“Test”,“product_type”:“樣本”} }
到目前為止我嘗試過的是使用JsonConvert.DeserializeObject
var jsonObj = JsonConvert.DeserializeObject<AccountantData>(responseMessage);
這是我的模特
public class AccountantData
{
[JsonProperty("accountant")]
public List<UserData> Accountant { get; set; }
}
public class UserData
{
public UserData(int sysId, string firstName, string lastName, string productType)
{
SystemId = sysId;
FirstName = firstName;
LastName = lastName;
ProductType = productType;
}
[JsonProperty("sysid")]
public int SystemId { get; set; }
[JsonProperty("first_name")]
public string FirstName { get; set; }
[JsonProperty("last_name")]
public string LastName { get; set; }
[JsonProperty("product_type")]
public string ProductType { get; set; }
}
但這會導致錯誤
Newtonsoft.Json.dll 中發生了“Newtonsoft.Json.JsonSerializationException”類型的異常,但未在用戶代碼中處理
附加信息:無法將當前 JSON 對象(例如 {"name":"value"})反序列化為類型“System.Collections.Generic.List`1[MyApp.UserData]”,因為該類型需要 JSON 數組(例如 [1 ,2,3]) 以正確反序列化。
要修復此錯誤,請將 JSON 更改為 JSON 數組(例如 [1,2,3])或更改反序列化類型,使其成為正常的 .NET 類型(例如,不是像整數這樣的原始類型,而不是像這樣的集合類型)可以從 JSON 對象反序列化的數組或列表)。 JsonObjectAttribute 也可以添加到類型中以強制它從 JSON 對象反序列化。
您的 JSON 輸入字符串不正確。 AccountantData
使用UserData
List
(數組)。 嘗試這個:
{
"accountant":[
{
"sysid":"1",
"first_name":"Test",
"last_name":"Test",
"product_type":"Sample"
}
]
}
更新:如果您總是要擁有一個UserData
對象,那么您可以將AccountantData
類更改為:
public class AccountantData
{
[JsonProperty("accountant")]
UserData Accountant { get; set; }
}
此外,如果您始終只有一個UserData
對象並且您可以控制 JSON 數據,那么您可以將 JSON 輸入數據更新為更簡單的格式,如下所示:
{
"sysid":"1",
"first_name":"Test",
"last_name":"Test",
"product_type":"Sample"
}
然后像這樣反序列化它:
var jsonObj = JsonConvert.DeserializeObject<UserData>(responseMessage);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.