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

.NET Core中使用NewtonJson序列化时移除字典外层属性名

解决NewtonJson字典属性平级序列化问题

问题核心:你当前代码把employees字典作为匿名类的单独属性,导致序列化后生成"employees"嵌套节点,而你需要将字典内的键值对直接和Id平级输出。

解决方法一:用ExpandoObject合并属性

public string GetCompany(Dictionary<string, Employee> employees)
{
    dynamic companyObj = new ExpandoObject();
    companyObj.Id = "1393";
    var expandoDict = (IDictionary<string, object>)companyObj;
    
    // 将字典中的员工键值对逐一添加到对象中
    foreach (var emp in employees)
    {
        expandoDict.Add(emp.Key, emp.Value);
    }
    
    return JsonConvert.SerializeObject(companyObj, Formatting.Indented);
}

解决方法二:用JObject直接构建目标结构

public string GetCompany(Dictionary<string, Employee> employees)
{
    var companyObj = new JObject();
    companyObj["Id"] = "1393";
    
    // 把每个员工对象转成JObject后添加到根节点
    foreach (var emp in employees)
    {
        companyObj[emp.Key] = JObject.FromObject(emp.Value);
    }
    
    return companyObj.ToString(Formatting.Indented);
}

原代码不符合预期的原因

原代码里的匿名类new { Id = "1393", employees }是C#语法糖,等价于new { Id = "1393", employees = employees },会给匿名类生成名为employees的属性,因此序列化后字典内容会被嵌套在"employees"节点下,无法平级展开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:35:01