我想从 json 文件中正确获取数据。我为此建模的json数据文件如下:
{
"Free title 1":[
{
"Subject": "a1",
"Relation": "a2"
},
{
"Subject": "b1",
"Relation": "b2"
}
],
"Another free title":[
{
"Subject": "z1",
"Relation": "z2"
},
{
"Subject": "y1",
"Relation": "y2"
}
],
"Unordered title":[
{
"Subject": "x1",
"Relation": "x2"
},
{
"Subject": "w1",
"Relation": "w2"
}
]
}
这就是我创建对象类的方式:
public class _Infos_
{
public List<_Info_> Infos { get; set; }
}
public class _Info_
{
public string Subject { get; set; }
public string Relation { get; set; }
}
最后我尝试用这样的方法获取数据:
var js = JsonConvert.DeserializeObject<_Infos_>(File.ReadAllText("__FILE_PATH__"));
foreach (var j in js.Infos)
{
MessageBox.Show(j.Subject);
}
我得到的错误是 js
是空的。在这里,我想在列表中获取 Free title 1
、Another free title
和 Unordered title
。当然,这些称呼会不断变化。然后,我想获取这些标题下的Subject
和Relation
数据。但是我不知道如何得到它。
最佳答案
此数据结构是 _Info_
集合的字典秒。您需要将其反序列化为 Dictionary<string, List<_Info_>>
.
这里是 System.Text.Json 和 Json.net 的例子:
var d = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, List<_Info_>>>(json);
var d2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<_Info_>>>(json);
关于c# - 在 Json.Net c# 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71420649/