c# - 在 Json.Net c# 中获取数据

标签 c# json.net

我想从 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 1Another free titleUnordered title。当然,这些称呼会不断变化。然后,我想获取这些标题下的SubjectRelation 数据。但是我不知道如何得到它。

最佳答案

此数据结构是 _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/

相关文章:

c# - 使用 JSON.NET 反序列化值为字段名称的 JSON

c# - 在 Xamarin.Forms 中获取 Image 或 ImageSource 的 bytes[]/stream?

c# - 使用属性名称中的特殊字符反序列化 JSON

c# - 有没有更简单的方法来访问 Jarray 中的 Json 对象值

c# - 反序列化包含 csv 文件的 json 作为响应

c# - 在新对象声明中使用 foreach

c# - 如何在不在客户端系统上安装 .NET 框架的情况下从 USB 运行 C# Windows 应用程序

c# - 将 Json 数组解析为 C# 中的类

C# 使用 JSON.Net 解析 JSON 数字属性

c# - 以不同的语言运行我的 C# 应用程序