如何使用JObject.SelectToken解析以@开头的JSON属性?
如何使用JObject.SelectToken()获取@id的值?
针对你提供的JSON结构,要获取@id的值,需要注意JSONPath语法中@是特殊字符(代表当前节点),直接写Test.@id会被解析错误。正确的写法是用单引号或双引号包裹带特殊字符的属性名:
可行的代码示例
string json = @" { ""Test"": { ""@id"": ""abcdef"" } }"; JObject jobject = JObject.Parse(json); // 方式1:用单引号包裹属性名 string id1 = jobject.SelectToken("Test['@id']").Value<string>(); // 方式2:用转义的双引号包裹属性名 string id2 = jobject.SelectToken("Test.\"@id\"").Value<string>();
为什么之前的尝试失败?
Test.@id:JSONPath会把@解析为当前节点,而非属性名的一部分,导致找不到目标属性Test.\@id/[Test].[\@id]:JSONPath中不需要用反斜杠转义@,这种写法不符合语法规范[Test].[@id]:错误地将@id解析为当前节点的id属性,而非名为@id的属性
内容的提问来源于stack exchange,提问作者Mike Cheel
相关产品推荐
相关产品推荐

