首页 > 解决方案 > 从 JSON 循环长值并在 C# 中写入控制台

问题描述

我在名为“Config.json”的文件中有一个类似这样结构的 JSON 文件:

    {
      "name": "Michael",
      "ids": [111111, 222222, 333333, 444444, 555555]
    }

我像这样反序列化它:

Config config = JsonConvert.DeserializeObject<Config>(File.ReadAllText("Config.json"));

我有一个像这样的配置类:

class Config
    {
        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("ids")]
        public long Ids{ get; set; }
    }

如何遍历 id 并将它们写入控制台?我试过这个:

    var ids = new List<long> { config.Ids};

    foreach (long id in ids)
    {
        Console.WriteLine(id.ToString());
    }

但我收到一个错误:

无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“System.Int64”,因为该类型需要 JSON 原始值(例如字符串、数字、布尔值、null)才能正确反序列化

我无法弄清楚如何反序列化和编写它...我尝试过尝试不同的值(uint64),但发生了同样的错误。

非常感谢!

标签: c#.netjson

解决方案


ids在 Json 中的属性是一个数组(如方括号所示)。要正确反序列化此 Json,您的模型类应如下所示

public class Config
{
    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("ids")]
    public IEnumerable<long> Ids { get; set; }
}

然后,如果您想将所有值写入控制台

foreach (var id in config.Ids)
{
    Console.WriteLine(id); 
}

推荐阅读