示例 JSON:
{
"name": "John Smith",
"pet1_name": "Fido",
"pet2_name": "Fluffy",
"pet3_name": "Killer"
}
我正在尋找的是使用 Newtonsoft 將其反序列化為看起來像這樣的物件的最簡單方法:
public class Person {
public string Name { get; set; }
public List<string> PetNames { get; set; }
}
如果可能的話,我最好避免創建名為“Pet1Name”、“Pet2Name”等的單個屬性,并在反序列化后將它們組合成一個串列。
uj5u.com熱心網友回復:
您可以通過添加 type 的屬性來反序列化 Json Dictionary<string,object>,用
uj5u.com熱心網友回復:
您可以使用 json 決議方法
var jasonObject=JObject.Parse(json);
var person = new Person
{
Name = (string)jsonObject["name"],
PetNames = jsonObject.Properties().Where(p => p.Name != "name").Select(p => (string)p.Value).ToList()
};
或者你可以使用 json 反序列化方法(不像上一個那樣靈活和快速)
var result = JsonConvert.DeserializeObject<JsonPerson>(json);
var person = new Person {Name=result.Name,
PetNames=result.PetNamesExt?.Values.Select(x=>x.ToString()).ToList()};
班級
public class Person
{
public string Name { get; set; }
[JsonIgnore]
public List<string> PetNames {get; set;}
}
public class JsonPerson : Person
{
[JsonExtensionData]
public Dictionary<string, object> PetNamesExt { get; set; }
}
輸出
{
"Name": "John Smith",
"PetNames": [
"Fido",
"Fluffy",
"Killer"
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/387248.html
