如何查询多个json节点



我有以下json:

{
"key445" : {
"text" : "cat",
"id" : 445
},
"key457" : {
"text" : "mouse",
"id" : 457
},
"key458" : {
"text" : "rodent",
"id" : 458
}
}

我正在尝试将textid提取到List<TextIdentifier>(一个具有字符串和int的类(中,或者甚至分别提取到List<string>List<int>中。

我使用JObject.Parse方法将文本读入JObject。然而,我不知道如何到达文本和id节点。我尝试了以下操作,但没有任何结果。

var textTokens = o.SelectTokens("/*/text");
var idTokens = o.SelectTokens("/*/id");

我如何才能获得我想要的代币?

我只想将整个JSON转换为Dictionary<string, TextIdentifier>,而不是尝试使用JsonPath:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
public class TextIdentifier
{
public string Text { get; set; }
public int Id { get; set; }
public override string ToString() => $"Id: {Id}; Text: {Text}";
}
public class Test
{
static void Main()
{
var json = File.ReadAllText("test.json");
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, TextIdentifier>>(json);
foreach (var pair in dictionary)
{
Console.WriteLine($"{pair.Key} => {pair.Value}");
}
}
}

输出:

key445 => Id: 445; Text: cat
key457 => Id: 457; Text: mouse
key458 => Id: 458; Text: rodent

如果你不关心密钥,你可以使用dictionary.Values.ToList()来获得List<TextIdentifier>,尽管你不应该依赖于它们的顺序。

相关内容

  • 没有找到相关文章

最新更新