【发布时间】:2018-01-11 15:27:52
【问题描述】:
我必须将一个 json 字符串反序列化为我自己的对象,该对象有一个子对象列表,这也有一个子对象列表。 像这样: 父类 -> 列表 -> 列表
如何反序列化这个 json 字符串?
json 示例:
{
{
"Departementstructure": {
"org.MainDepartments": [{
"@MainDepartmentsId": "4",
"@MainDepartmentsName": "Direktorium",
"@MainDepartmentsName_En": "Board of Directors",
"org.WorkAreas": [{
"@Id": "30",
"@Name": "Direktorin",
"@WorkAreasName_En": "Director",
"org.LIfBiDepartments": {
"@LIfBiDepartmentsId": "1",
"@LIfBiDepartmentsName": "Direktorin",
"@LIfBiDepartmentsName_En": "Director"
}
},
{
"@Id": "31",
"@Name": "Kaufmännischer Geschäftsführer",
"@WorkAreasName_En": "Executive Director of Administration",
"org.LIfBiDepartments": {
"@LIfBiDepartmentsId": "52",
"@LIfBiDepartmentsName": "",
"@LIfBiDepartmentsName_En": ""
}
},
{
"@Id": "32",
"@Name": "Wissenschaftliches Referat des Direktoriums",
"@WorkAreasName_En": "Scientific Office to the Board of Directors",
"org.LIfBiDepartments": {
"@LIfBiDepartmentsId": "53",
"@LIfBiDepartmentsName": "",
"@LIfBiDepartmentsName_En": ""
}
},..
jsonproperty 属性来自尝试解决方案。
public class LomVereinsstructure
{
public LomVereinsstructure()
{
Parents = new List<LomParentMainDepartment>();
}
[JsonProperty("Departementstructure")]
public List<LomParentMainDepartment> Parents { get; set; }
}
[JsonArray("org.MainDepartments")]
public class LomParentMainDepartment
{
public LomParentMainDepartment()
{
Children = new List<LomChildWorkarea>();
}
[DataMember]
[JsonProperty("@MainDepartmentsId")]
public int Id { get; set; }
[DataMember]
public string ShortName { get; set; }
[DataMember]
[JsonProperty("@MainDepartmentsName")]
public string Name { get; set; }
[DataMember]
[JsonProperty("@MainDepartmentsName_En")]
public string NameEn { get; set; }
[DataMember]
//[JsonProperty("org.WorkAreas")]
public List<LomChildWorkarea> Children { get; set; }
}
[JsonArray("org.WorkAreas")]
public class LomChildWorkarea
{
public LomChildWorkarea()
{
Children = new List<LomChildDepartment>();
}
[DataMember]
[JsonProperty("@Id")]
public int Id { get; set; }
[DataMember]
public string ShortName { get; set; }
[DataMember]
[JsonProperty("@Name")]
public string Name { get; set; }
[DataMember]
[JsonProperty("@WorkAreasName_En")]
public string NameEn { get; set; }
[DataMember]
//[JsonProperty("@org.LIfBiDepartments")]
public List<LomChildDepartment> Children { get; set; }
}
[JsonArray("org.LIfBiDepartments")]
public class LomChildDepartment
{
public LomChildDepartment()
{
OrganisationUnit = new LomChildOrganisationUnit();
}
[DataMember]
[JsonProperty("@LIfBiDepartmentsId")]
public int Id { get; set; }
[DataMember]
public string ShortName { get; set; }
[DataMember]
[JsonProperty("@LIfBiDepartmentsName")]
public string Name { get; set; }
[DataMember]
[JsonProperty("@LIfBiDepartmentsName_En")]
public string NameEn { get; set; }
[DataMember]
public LomChildOrganisationUnit OrganisationUnit { get; set; }
}
非常感谢您的帮助
【问题讨论】:
-
Visual Studio 有一个解析器可以在
Edit -> Paste Special -> Past JSON as Classes中进行分类,然后您可以将它与您自己的对象进行比较,看看有什么问题 -
它还会告诉你 JSON 字符串的哪一部分有问题