【问题标题】:Deserializing Json With Unknown Key - ASP.Net Core 3.1使用未知密钥反序列化 Json - ASP.Net Core 3.1
【发布时间】:2021-11-11 04:22:12
【问题描述】:
我想用 .Net 3.1 反序列化以下 JSON
我的困难是当这个对象被序列化时,这个对象的“1234”键是未知的。我怎么能反序列化这个?我要保留的值是嵌套的“first_name”和“last_name”属性
{
"1234":{
"id":1234,
"first_name":"John",
"last_name":"Doe"
}
}
感谢任何帮助!
【问题讨论】:
标签:
json
asp.net-core
asp.net-core-3.1
.net-core-3.1
nested-json
【解决方案1】:
如果您使用Newtonsoft.Json.JsonConverter 库,您可以创建一个自定义JsonConverter 来处理动态属性并覆盖ReadJson 和WriteJson 方法。
public class MyConverter : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
// write your custom read json
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
// write your custom write json
}
}
https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonConverter.htm
【解决方案2】:
你可以使用字典:
public class Child
{
[JsonPropertyName("id")]
public string ID { get; set; }
[JsonPropertyName("first_name")]
public string FirstName { get; set; }
[JsonPropertyName("last_name")]
public string LastName { get; set; }
}
public class Parent
{
public Dictionary<string, Child> Children { get; set; }
}
然后您可以使用Foreach 或Linq 枚举Children。