我正试图找出一种方法将“参与者”对象的选择属性分配到特定的类中:
这是我正在使用的格式
"participants": [
{
"person_id": "18044029",
"role_id": "35351535",
"person_name": "Lella Vignelli",
"person_date": "Italian, b. 1934",
"role_name": "Donor",
"role_display_name": "Donated by"
},
{
"person_id": "18042329",
"role_id": "35351535",
"person_name": "Massimo Vignelli",
"person_date": "Italian, active USA, 1931\u20132014",
"role_name": "Donor",
"role_display_name": "Donated by"
}
]
这是我的课程“
@JsonIgnoreProperties(ignoreUnknown = true)
public class ChObject {
@JsonProperty("participants")
private List<Participation> participants;
//Setters and getters
}
以下是参与课程:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Participation {
private Role role;
private Participant participant;
//Setters and getters
}
角色类:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Role {
@JsonProperty("role_id")
private int role_id;
@JsonProperty("role_name")
private String role_name;
//Setters and getters
}
参与者课程:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Participant {
private int person_id;
@JsonProperty("person_name")
private String person_name;
@JsonProperty("person_date")
private String person_date;
//Setters and getters
}
我遇到的问题是我无法弄清楚如何将“person_name”和“person_date”属性放入Participant类或“role_id”和“role_name”属性到Role类中参与课程。
Participation类可以访问所有这些属性,但我似乎无法将它们分配给Participant和Roles类的属性。
感谢您的帮助。 对不起,如果我不是100%清楚一切。
答案 0 :(得分:1)
您的类结构需要匹配JSON文档的结构,该文档是包含单个List<Participant>
类型字段的1个对象,每个Participant
都有这6个属性。
在正确反序列化之后,您可以将数据移动到您拥有的其他类。
正确的课程是:
public class ChObject {
@JsonProperty("participants")
List<Participant> participants;
// setters & getter omitted
}
public class Participant {
@JsonProperty("person_id")
private String id;
@JsonProperty("role_id")
private String roleId;
@JsonProperty("person_name")
private String name;
@JsonProperty("person_date")
private String date;
@JsonProperty("role_name")
private String roleName;
@JsonProperty("role_display_name")
private String roleDisplayName;
// setters & getters omitted
}
另外,请注意没有必要将java字段名称与属性名称匹配,因为您在JsonProperty
注释中指定了其JSON名称。