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

如何通过Json.NET直接将JSON数组反序列化到自定义对象的属性中?

当然可以实现一步反序列化!

你完全不用绕弯子先手动反序列化成List<Entry>再赋值给Collection的Entries属性——只要稍微调整下Collection类的定义,或者加个自定义转换器,就能一步到位直接调用JsonConvert.DeserializeObject<Collection>(json)完成反序列化。

方法一:自定义JSON转换器(灵活适配复杂场景)

如果你的Collection类还有其他属性,或者需要更精细控制序列化/反序列化逻辑,自定义JsonConverter是最优解:

首先定义你的Entry类(示例):

public class Entry
{
    public int Id { get; set; }
    public string Name { get; set; }
    // 你的其他属性
}

然后创建自定义转换器,负责把JSON数组映射到Collection的Entries属性:

public class CollectionConverter : JsonConverter<Collection>
{
    public override Collection ReadJson(JsonReader reader, Type objectType, Collection existingValue, bool hasExistingValue, JsonSerializer serializer)
    {
        // 直接将JSON数组反序列化为Entry列表
        var entries = serializer.Deserialize<List<Entry>>(reader);
        // 返回初始化好的Collection对象
        return new Collection { Entries = entries };
    }

    public override void WriteJson(JsonWriter writer, Collection value, JsonSerializer serializer)
    {
        // 如果需要把Collection序列化为JSON数组,直接序列化Entries即可
        serializer.Serialize(writer, value.Entries);
    }
}

最后给Collection类标记上这个转换器:

[JsonConverter(typeof(CollectionConverter))]
public class Collection
{
    public List<Entry> Entries { get; set; }
    // 你的其他属性
}

现在就可以直接调用你想要的代码了:

var coll = JsonConvert.DeserializeObject<Collection>(json);

方法二:利用构造函数标记(简洁轻量)

如果你的需求很简单,只是把JSON数组直接映射到Entries属性,也可以通过标记构造函数来实现:

修改Collection类,添加带List<Entry>参数的构造函数,并标记[JsonConstructor]:

public class Collection
{
    public List<Entry> Entries { get; set; }

    // 让Newtonsoft.Json识别这个构造函数,用JSON数组作为参数
    [JsonConstructor]
    public Collection(List<Entry> entries)
    {
        Entries = entries;
    }

    // 如果需要无参构造函数(比如其他业务场景用到),可以保留
    public Collection() { }
}

这样同样可以直接调用var coll = JsonConvert.DeserializeObject<Collection>(json)完成反序列化,Newtonsoft.Json会自动把JSON数组传入构造函数,赋值给Entries属性。

小提示

两种方法都能完美适配你的JSON数组格式(比如[{"Id":1,"Name":"测试1"},{"Id":2,"Name":"测试2"}]),你可以根据自己的业务复杂度选择合适的方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:03:19