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

如何为C#序列化的JSON列表添加根节点‘work’

问题:为序列化后的JSON添加"work"根节点

我编写了一段生成JSON字符串的C#代码:

public class Work
{
    public string id { get; set; }
    public string name { get; set; }
    public bool status { get; set; }
    public bool open { get; set; }
   
}
public class Root
{
    public IList<Work> work { get; set; }    
}


public void Work_add(string id, string nameM)
{                    
    _work.Add(new Work()
    {
        id = id,
        name = nameM,
        status = false,
        open = false
    });
}

public List<Work> _work = new List<Work>(); 

public void Print_Json()
{
    // ... 其他代码
    string jsonE = JsonConvert.SerializeObject(_work);
}

当列表填充完成并序列化后,得到的JSON结构如下:

[{"id":"1","name":"AAA","status":"false","open":"false"},{"id":"2","name":"BBB","status":"false","open":"false"},{"id":"4","name":"CCC","status":"false","open":"false"},{"id":"5","name":"DDD","status":"false","open":"false"},{"id":"6","name":"EEE","status":"false","open":"false"},{"id":"7","name":"FFF","status":"false","open":"false"},{"id":"8","name":"GGG","status":"false","open":"false"}]

我需要为该列表添加名为"work"的根节点,让最终JSON结构变为:

{"work":[{"id":"1","name":"AAA","status":"false","open":"false"},{"id":"2","name":"BBB","status":"false","open":"false"},{"id":"4","name":"CCC","status":"false","open":"false"},{"id":"5","name":"DDD","status":"false","open":"false"},{"id":"6","name":"EEE","status":"false","open":"false"},{"id":"7","name":"FFF","status":"false","open":"false"},{"id":"8","name":"GGG","status":"false","open":"false"}]}

解决方法

方法1:利用已定义的Root类

你已经提前定义了包含work属性的Root类,只需在序列化时将列表赋值给Root对象,再序列化Root对象即可:

修改Print_Json方法:

public void Print_Json()
{
    // ... 保留原有其他代码
    Root rootObj = new Root();
    rootObj.work = _work;
    string jsonE = JsonConvert.SerializeObject(rootObj);
}

方法2:使用匿名对象快速包裹

如果不想额外实例化Root类,直接用匿名对象包裹列表即可实现需求:

public void Print_Json()
{
    // ... 保留原有其他代码
    string jsonE = JsonConvert.SerializeObject(new { work = _work });
}

额外说明:当前序列化结果中布尔类型的status和open被转为字符串"false",这并非Json.NET的默认行为,若不需要此效果,检查是否存在自定义序列化配置或转换器。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:35:20