我有以下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。然而,我不知道如何到达文本和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>
,尽管你不应该依赖于它们的顺序。