计数 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>
。)
我想数一数我给每个对象编号了多少个对象
{
"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>
。)