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

反序列化含斜杠的JSON值时为何额外添加方括号?

关于Newtonsoft.Json中JToken.Path格式的说明

这是有意设计的行为,并非Bug。

Newtonsoft.Json的JToken.Path属性生成的路径遵循JSONPath规范的约定:当键名包含特殊字符(如斜杠/、点.、空格等)时,会自动采用['键名']的格式包裹键名,核心目的是避免路径解析时产生歧义。

具体原因:

  • 对于无特殊字符的键名(如name),直接使用name格式即可清晰表示键名,不会和JSONPath的层级分隔逻辑冲突。
  • 对于包含斜杠的键名(如na/me),如果直接输出na/me,会被JSONPath解析器误认为是层级路径(类似父节点/子节点的结构),导致无法正确定位到目标键。而['na/me']的格式能明确告知解析器:这是一个完整的键名,而非层级分隔的路径。

验证示例:

如果尝试用na/me作为路径访问目标值会失败,而['na/me']能正确定位:

var value = object2JToken.SelectToken("['na/me']"); // 正确获取到"Premium"
// var value = object2JToken.SelectToken("na/me"); // 抛出找不到节点的异常

这种设计保证了路径的唯一性和可解析性,完全符合JSONPath的标准行为。

内容的提问来源于stack exchange,提问作者Frank Ocean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:06:28