我有一个JSON文件。
{
"Enumerations" : {
"IndianCities" : [
{ "key" : "Delhi", "val" : 001},
{ "key" : "Mumbai", "val" : 002},
],
.
.
},
"Users":[
{
"AccessType" : "Admin",
"Male" : [
{
"Name" : "Xyz",
"ID" : 459,
},
{
"Name" : "Abc",
"ID" : 542,
}
],
"Female" : [
{
"Name" : "Abc",
"ID" : 543,
}
]
},
{
"Location" : "NewYork",
"Male" : [
{
"Name" : "Xyz",
"ID" : 460,
},
{
"Name" : "Abc",
"ID" : 642,
}
],
"Female" : [
{
"Name" : "Abc",
"ID" : 643,
}
]
},
]
在这里,我想在列表中存储所有枚举数据(密钥和Val信息)。同样在用户课程中,我想存储所有嵌套类的所有男性用户的信息。在这里,我写了两个类名(" admin"one_answers" newyork"),但是在我的JSON中,我有大约100个类。是否有任何通用解决方案可用于阅读男性信息所有课程并放入列表中。
欢迎使用Stackoverflow!
将来,请确保您是否在问一个问题,您发布的代码没有错误或是否确实有错误,那么您的问题可能是关于解决错误的问题。
您的JSON无效JSON。
步骤1
修复您的JSON。这是您的JSON的更正版本:
{
"Enumerations" : {
"IndianCities" : [
{ "key" : "Delhi", "val" : 001},
{ "key" : "Mumbai", "val" : 002}
]
},
"Users":[
{
"AccessType" : "Admin",
"Male" : [
{
"Name" : "Xyz",
"ID" : 459
},
{
"Name" : "Abc",
"ID" : 542
}
],
"Female" : [
{
"Name" : "Abc",
"ID" : 543
}
]
},
{
"Location" : "NewYork",
"Male" : [
{
"Name" : "Xyz",
"ID" : 460
},
{
"Name" : "Abc",
"ID" : 642
}
],
"Female" : [
{
"Name" : "Abc",
"ID" : 643
}
]
}
]
}
步骤2
正如我在评论中提到的那样,请参阅此处的答案以创建C#类以表示您的JSON。我做到了,它产生了:
public class Rootobject
{
public Enumerations Enumerations { get; set; }
public User[] Users { get; set; }
}
public class Enumerations
{
public Indiancity[] IndianCities { get; set; }
}
public class Indiancity
{
public string key { get; set; }
public int val { get; set; }
}
public class User
{
public string AccessType { get; set; }
public Male[] Male { get; set; }
public Female[] Female { get; set; }
public string Location { get; set; }
}
public class Male
{
public string Name { get; set; }
public int ID { get; set; }
}
public class Female
{
public string Name { get; set; }
public int ID { get; set; }
}
步骤3
是否有任何通用解决方案可用于阅读男性信息所有课程并放入列表中。
是!但是您真正的意思是:
是否有任何通用解决方案可用于将所有男性读入列表?
使用newtonsoft.json库应对JSON内容进行估算。请注意,每个User
实例都有一个Male
数组,因此您需要使用SelectMany来平面数据,如下所示:
Rootobject ro = JsonConvert.DeserializeObject<Rootobject>("YourJSON");
List<Male> males = ro.Users.SelectMany(x => x.Male).ToList();
如果需要,您可以进行其他过滤。