【问题标题】: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; }
      }
      

      然后您可以使用ForeachLinq 枚举Children

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多