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

如何移除JSON对象中的dynamicObject节点并保留其子字段

移除JSON中的dynamicObject节点并保留其子字段的解决方法

针对你的需求,这里提供两种实用的C#解决方案,基于你使用的Newtonsoft.Json(JsonConvert)库:

方法一:直接操作JSON对象(无需修改实体类)

如果无法修改生成JSON的原始实体类,直接解析并操作JObject是最灵活的方式:

using Newtonsoft.Json.Linq;

// 假设你已有的JSON字符串是item
JObject jsonObj = JObject.Parse(item);
JObject mergeFields = (JObject)jsonObj["merge_fields"];

// 取出dynamicObject节点的内容
JObject dynamicObj = (JObject)mergeFields["dynamicObject"];
if (dynamicObj != null)
{
    // 将dynamicObject下的所有字段移到merge_fields中
    foreach (var prop in dynamicObj.Properties())
    {
        mergeFields.Add(prop.Name, prop.Value);
    }
    // 删除原dynamicObject节点
    mergeFields.Remove("dynamicObject");
}

// 得到处理后的JSON字符串
string processedJson = jsonObj.ToString();

方法二:修改实体类(从源头控制JSON结构)

如果有权限修改生成JSON的someRequest实体类,可以直接调整结构避免生成dynamicObject节点:

场景1:字段固定的情况

如果dynamicObject下的字段是固定的(比如FirstName、LastName),直接修改MergeFields类:

// 修改后的实体类
public class SomeRequest
{
    public string email_address { get; set; }
    public string status { get; set; }
    public MergeFields merge_fields { get; set; }
}

public class MergeFields
{
    // 移除原dynamicObject属性,直接添加子字段
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

// 赋值时直接给MergeFields的字段赋值,再序列化
someRequest.merge_fields.FirstName = "Jack";
someRequest.merge_fields.LastName = "Sparrow";
string processedJson = JsonConvert.SerializeObject(someRequest);

场景2:字段动态的情况

如果dynamicObject下的字段不固定,把MergeFields改成字典类型:

public class SomeRequest
{
    public string email_address { get; set; }
    public string status { get; set; }
    public Dictionary<string, object> merge_fields { get; set; }
}

// 处理原数据
var dynamicData = someRequest.merge_fields["dynamicObject"] as Dictionary<string, object>;
if (dynamicData != null)
{
    // 将动态字段移到merge_fields根节点
    foreach (var kvp in dynamicData)
    {
        someRequest.merge_fields[kvp.Key] = kvp.Value;
    }
    // 删除dynamicObject节点
    someRequest.merge_fields.Remove("dynamicObject");
}

// 序列化得到目标JSON
string processedJson = JsonConvert.SerializeObject(someRequest);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:07:36