从JSON反序列化重复字典

时间:2019-05-10 01:00:32

标签: c# arrays json dictionary json.net

我正在尝试使用JSON.net反序列化大型JSON文件。我无法反序列化此文件中的嵌套字典。包含这些词典的对象的名称在文件中重复数千次。我提供的代码是我正在处理的文件的简短版本,以显示这些重复嵌套字典的示例。我正在寻找一种解决方案,可以将成千上万个“ image_uris”的内容反序列化为我认为的类,以便可以访问每个“ image_uris”中的“ small”,“ medium”和“ large”键和值对象。

[
    {
        "object":"card",
        "id":"789",
        "image_uris":
        {
            "small":"https://img...98713",
            "medium":"https://img...89712",
            "large":"https://img...97123",
        }
    },
    {
        "object":"card",
        "id":"654",
        "image_uris":
        {
            "small":"https://img...43243",
            "medium":"https://img...26267",
            "large":"https://img...00812",
        }
    },
    {
        "object":"card",
        "id":"091",
        "image_uris":
        {
            "small":"https://img...98760",
            "medium":"https://img...92331",
            "large":"https://img...87690",
        }
    }
]

我一直在使用C#和JSON.net开发Unity游戏引擎。我已尝试通过将其填充整个JSON文件来使用http://json2csharp.com/。它吐出了约1700行代码,并在顶部注释了实现说明。我不确定如何按照这些说明访问所有生成的类和这些类中的数据。这些说明如下:

// <auto-generated />
//
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
//    using QuickType;
//
//    var scryfallDefaultCards = ScryfallDefaultCards.FromJson(jsonString);

1 个答案:

答案 0 :(得分:0)

不确定问题出在哪里,但我只是将您的JSON代码片段复制粘贴到您访问过的网站上并得到了这个信息:

public class ImageUris
{
    public string small { get; set; }
    public string medium { get; set; }
    public string large { get; set; }
}

public class RootObject
{
    public string @object { get; set; }
    public string id { get; set; }
    public ImageUris image_uris { get; set; }
}

但是您的JSON是一个数组,您应该像这样反序列化:

var result = JsonConvert.DeserializeObject<List<RootObject>>(jsonString);

使用较大的JSON字符串,效果应该相同