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

无法将JSON Node更新为字符串值:C#中my_location节点替换问题

解决JSON节点赋值后变成字符串而非数组的问题

你遇到的核心问题很典型:直接把JSON格式的字符串string2赋值给jsonObj节点时,Newtonsoft.Json会把它当作普通文本处理,自动给它加上引号,导致my_location数组里只塞了一个字符串元素,而不是你想要的多个地址对象。

解决步骤


1. 清理并反序列化string2

你的string2首尾带了多余的双引号(开头是" {,结尾是}"),得先把这些无效字符去掉,再把它反序列化成JArray(Newtonsoft.Json专门处理JSON数组的类型),这样框架才能识别这是一组对象,不是普通文本。

2. 用反序列化后的数组替换目标节点

把解析好的JArray赋值给目标节点,而不是直接扔字符串。

完整修改后的C#代码


using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.IO;

// 读取原始JSON文件
string RequestData = File.ReadAllText("UpdatedRecord.json");
dynamic jsonObj = JsonConvert.DeserializeObject(RequestData);

// 步骤1:清理string2首尾的引号,再解析成JArray
string cleanedString2 = string2.Trim('"');
JArray addressArray = JArray.Parse(cleanedString2);

// 步骤2:把解析好的数组赋值给目标节点
jsonObj[allNode[0]][allNode[1]][0][allNode[2]][0] = addressArray;

// 可选:把修改后的JSON写回文件
string updatedJson = JsonConvert.SerializeObject(jsonObj, Formatting.Indented);
File.WriteAllText("UpdatedRecord.json", updatedJson);

为什么这样能解决问题?


  • 清理首尾引号是为了让JArray.Parse()能正确识别JSON结构,不然会因为多余的引号解析失败。
  • JArray.Parse()把JSON字符串转换成了框架能识别的数组对象,赋值后会自动按照JSON数组的格式输出,不会再把它当成字符串处理。

最终输出效果


修改后,my_location节点会变成你期望的格式:

"my_location": [
  {
    "my_address_type": "AAA",
    "my_address-street": "601 XX street",
    "my_address-suburb": "XXX",
    "my_address-postcode": "XX",
    "my_address-state": "XX"
  },{
    "my_address_type": "BBB", //changed
    "my_address-street": "601 XX street",
    "my_address-suburb": "XXX",
    "my_address-postcode": "XX",
    "my_address-state": "XX"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:15:08