bounty将在5天内到期。回答此问题可获得+100声望奖励。user1578872正在寻找一个规范答案。
我在顶级文档中有id,在子文档中有id。未填充子文档ID。
我的JSON文档:-
{
"_id": "a392ec9c-4f5c-411a-8599-928c5ce6b18d",
"name": "polName",
"rules": [
{
"t": "TestRule",
"principals": [
{
"name": "Test Report",
"id": "Test Report",
"type": "PY"
},
{
"name": "Test Report1",
"id": "Test Report1",
"type": "SY"
}
]
}
]
}
Dto类,
@JsonInclude(Include.NON_EMPTY)
@JsonIgnoreProperties(ignoreUnknown = true)
public class PolicyDto {
@JsonProperty("docId")
@JsonAlias({ "_id" })
private String id;
private String name;
private List<Rule> rules;
public String getId() {
return id;
}
public void setId(final String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public List<Rule> getRules() {
return rules;
}
public void setRules(final List<Rule> rules) {
this.rules = rules;
}
public static class Rule {
private List<Principal> principals;
public List<Principal> getPrincipals() {
return principals;
}
public void setPrincipals(final List<Principal> principals) {
this.principals = principals;
}
}
public static class Principal {
private String name;
private String id;
private String type;
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(final String id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(final String type) {
this.type = type;
}
}
}
在这里,principal内部的id被正确填充。
2条答案
按热度按时间htrmnn0y1#
我尝试了以下代码段:
以及DTO:
输出:
代码工作正常,上面提到的
id
似乎也被正确填充了。如何使用此DTO?你能详细说明一下吗?bvjxkvbb2#
在你的JSON中,在“规则”级别有一个字段“t”-
"t": "TestRule",
。在你的类Rule
中,你没有属性“t”,所以,当我试图解析你的JSON时,我得到了一个错误,抱怨字段“t”未知。因此,我将@JsonIgnoreProperties(ignoreUnknown = true)
添加到您的Rule
类中,然后一切正常,所有字段都得到填充。下面是我的代码:请注意,
JsonUtils
类是ObjectMapper
类的一个瘦 Package 器。JsonUtils
类附带由我编写和维护的MgntUtils开源Java库。这里是the Javadoc for JsonUtils class。MgntUtils库可以从Maven Central或Github获得(包括源代码和Javadoc)