计数 json 个对象 newtonsoft json c#

Count json Objects newtonsoft json c#

我想数一数我给每个对象编号了多少个对象

{
  "1": {
    "App Name": "7-Zip",
    "App Icon": "",
    "App Link": "http://Example.com/Apps/7-Zip.zip",
    "Category": "Apps"
  },
  "2": {
    "App Name": "AnyDesk",
    "App Icon": "https://anydesk.com/_static/img/favicon/anydesk_icon.png",
    "App Link": "http://Example.com/Apps/AnyDesk.exe",
    "Category": "Apps"
  },
  "3": {
    "App Name": "Brave",
    "App Icon": "http://icons.iconarchive.com/icons/papirus-team/papirus-apps/512/brave-icon.png",
    "App Link": "http://Example.com/Apps/Brave.zip",
    "Category": "Browsers"
  },
  "4": {
    "App Name": "Battle.Net",
    "App Icon": "https://www.macupdate.com/images/icons512/60504.png",
    "App Link": "http://Example.com/Apps/Battle.net.zip",
    "Category": "Battle.Net"
  }
}

我的 C# 代码

var json = File.ReadAllText("D:\AppJson.json"); 
var results = JsonConvert.DeserializeObject<Root>(json);

根目录Class

public class _1
{
    [JsonProperty("App Name")]
    public string AppName { get; set; }

    [JsonProperty("App Icon")]
    public string AppIcon { get; set; }

    [JsonProperty("App Link")]
    public string AppLink { get; set; }
    public string Category { get; set; }
}

public class _2
{
    [JsonProperty("App Name")]
    public string AppName { get; set; }

    [JsonProperty("App Icon")]
    public string AppIcon { get; set; }

    [JsonProperty("App Link")]
    public string AppLink { get; set; }
    public string Category { get; set; }
}

public class Root
{
    public _1 _1 { get; set; }
    public _2 _2 { get; set; }
}

已编辑:

添加了根 Class(较小的版本)

我想让它计算每个对象,这样我就可以像 Root.Count; 那样对它做 if 语句,但我找不到 Newtonsoft.Json

的修复方法

虽然使用数组而不是对象作为根会容易得多,但您仍然可以使用现有的 JSON 来执行此操作。不是为每个 属性 创建一个 Root class 和单独的 class,而是创建一个代表这些记录之一的 class:

public class MyRecord
{
    [JsonProperty("App Name")]
    public string AppName { get; set; }

    [JsonProperty("App Icon")]
    public string AppIcon { get; set; }

    [JsonProperty("App Link")]
    public string AppLink { get; set; }

    public string Category { get; set; }
}

然后反序列化为这些对象的 Dictionary

var results = JsonConvert.DeserializeObject<Dictionary<string, MyRecord>>(json);

您可以使用此 Dictionary 获取记录数、遍历它们等。在这种情况下,Dictionary 条目的“键”只是数字 属性 根 JSON 对象中的名称。 (如果属性始终为整数,您也可以使用 Dictionary<int, MyRecord>。)