C#如何将嵌套JSON字符串插入到现有JSON字符串中
C# 实现嵌套JSON插入合并方案
处理这类JSON结构动态合并的场景,直接使用Newtonsoft.Json(Json.NET)实现成本最低,无需提前定义对应C#强类型模型即可灵活修改JSON节点。
前置准备
通过NuGet包管理器给项目安装Newtonsoft.Json依赖。
实现代码
首先引入所需命名空间:
using Newtonsoft.Json; using Newtonsoft.Json.Linq;
核心逻辑代码:
// 两个原始输入JSON字符串 string productJson = @"{ ""Products"":[ { ""productId"":1, ""productName"":""product1"" } ] }"; string brandJson = @"{ ""Brand"":[ { ""brandId"":1, ""brandName"":""brand1"" } ] }"; // 将两个JSON字符串解析为可操作的动态JObject对象 JObject productObj = JObject.Parse(productJson); JObject brandObj = JObject.Parse(brandJson); // 定位到Products数组下需要插入Brand节点的产品对象 // 单条数据直接取索引0即可,多条数据可遍历数组 JToken targetProduct = productObj["Products"][0]; // 把Brand节点挂载到目标产品对象下 targetProduct["Brand"] = brandObj["Brand"]; // 输出格式化后的最终JSON string finalResult = productObj.ToString(Formatting.Indented);
运行后finalResult的内容和给出的期望输出完全一致。
扩展场景处理
如果Products数组下包含多个产品,需要给所有产品都挂载Brand信息,把单条节点取值的逻辑替换为循环遍历即可:
foreach (JObject product in productObj["Products"].Children<JObject>()) { product["Brand"] = brandObj["Brand"]; }
注意:示例中部分属性名(如
productId、brandId)未添加双引号,属于不符合规范的JSON格式,实际传入解析的字符串请保证为标准合法JSON,否则会触发解析异常。
内容的提问来源于stack exchange,提问作者Arturo Tiangco
相关产品推荐
相关产品推荐

