You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Newtonsoft.Json反序列化结构变更后的JSON数据

问题原因

新返回的JSON结构是外层为键值对的对象,而非包含Persons字段的数组结构,和你定义的PersonResult类结构完全不匹配,因此反序列化失败。同时服务端将原小写的dob字段改为了大写DOB,也会导致原有属性映射失败。

解决方案

第一步:调整Person类的属性映射

删除Name属性的JsonProperty特性(值将来自外层字典的键),修改DOB属性的JsonProperty匹配新的大写字段名:

public class Person
{
    public string Name {get; set;}
    [JsonProperty("age")]
    public decimal Age {get; set;}
    [JsonProperty("height")]
    public decimal Height {get; set;}
    [JsonProperty("weight")]
    public decimal Weight {get; set;}
    [JsonProperty("DOB")]
    public DateTime DOB {get; set;}   
}

第二步:分两步完成反序列化

先将JSON反序列化为Dictionary<string, Person>类型,再遍历字典将键值赋值给对应Person对象的Name属性,最终转换为数组:

// 反序列化为字典
var personDict = JsonConvert.DeserializeObject<Dictionary<string, Person>>(jsonString);
// 填充Name属性并转为数组
Person[] persons = personDict.Select(kv => 
{
    kv.Value.Name = kv.Key;
    return kv.Value;
}).ToArray();

如果不需要保留原有数组调用方式,也可以直接使用字典类型处理业务逻辑,省略转换步骤。

内容的提问来源于stack exchange,提问作者Questions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:57:02