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

如何对名称包含方括号的JToken使用SelectToken获取值?

解决方案

两种场景的处理方式

1. 直接用索引器/Value方法(无需转义,推荐)

这种方式直接按字符串匹配键名,不会解析JsonPath语法,方括号不需要做任何转义,只要保证传入的键名和JSON中的完全一致即可。
你之前的写法存在两个问题:一是漏了键名开头的/,原JSON中的键是/3/32[v]而非3/32[v];二是调用层级需要先定位到FieldValues节点。
正确的VB.NET写法:

' 假设tmpJToken指向包含FieldValues的目标对象节点
Dim result As String = tmpJToken("FieldValues").Value(Of String)("/3/32[v]")
' 也可以直接用多层索引器写法
Dim result As String = tmpJToken("FieldValues")("/3/32[v]").ToString()

2. 用SelectToken方法(需要转义)

SelectToken基于JsonPath语法解析路径,方括号[]是JsonPath的保留字符,用于标识数组索引或过滤条件,因此需要转义。转义规则是:把包含特殊字符的键名用单引号包裹,放在方括号中使用。
正确的VB.NET写法:

' 假设tmpJToken指向包含FieldValues的目标对象节点
Dim result As String = tmpJToken.SelectToken("FieldValues['/3/32[v]']").Value(Of String)()

如果你的tmpJToken指向最外层的根数组,需要补充层级索引:

Dim result As String = tmpJToken.SelectToken("[1][0].FieldValues['/3/32[v]']").Value(Of String)()

内容的提问来源于stack exchange,提问作者Mec-Eng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:24:02