【发布时间】:2020-12-10 18:50:05
【问题描述】:
我有以下 json:
{
"key445" : {
"text" : "cat",
"id" : 445
},
"key457" : {
"text" : "mouse",
"id" : 457
},
"key458" : {
"text" : "rodent",
"id" : 458
}
}
我正在尝试将text 和id 提取到List<TextIdentifier>(带有字符串和int 的类),甚至分别提取到List<string> 和List<int>。
我使用JObject.Parse 方法将文本读入JObject。但是,我不知道如何到达 text 和 id 节点。我尝试了以下方法,但没有返回任何内容。
var textTokens = o.SelectTokens("/*/text");
var idTokens = o.SelectTokens("/*/id");
我怎样才能得到我想要的令牌?
【问题讨论】:
-
有什么理由解析成
JObject,而不是解析成Dictionary<string, TextIdentifier>,我怀疑它会立即起作用? -
@JonSkeet 没有理由,我只是不知道该怎么做。 JObject 似乎是调试它的好方法。
-
对。所以如果
TextIdentifier具有Text和Id的可写属性,这就是你需要做的一切:) -
@JonSkeet 我的问题是找到正确的 JsonPath 查询以从 json 中提取这些标记。一旦我得到它们,我绝对可以将它们写入一个对象。
-
我的意思是你根本不需要使用 JsonPath。只需将整个对象转换为
Dictionary<string, TextIdentifier>,然后如果您只需要这些值,只需使用Values属性。除非您按照 JSON 文件的顺序需要它们,否则将非常脆弱。 (现在添加示例。)