我正在使用Jackson解析以下JSON:
{
"AwardID": "1111111",
"AwardTitle": "Test Title",
"Effort":
"[
{
"PersonFirstName": "Jon",
"PersonLastName": "Snow"
}
]"
}
我想把它展平,以便在下面的类中使用:
public class Award {
private String awardId;
private String awardTitle;
private String personFirstName;
private String personLastName;
}
我尝试了以下方法,并获得了前两个值,但在尝试使用JsonUnwrapped时无法从Effort中获得值。我注意到它不适用于数组,但我正在尝试使用main方法中的objectMapper.configure(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS,true)配置来获得值。
public class Award {
@JsonProperty("AwardID")
private String awardId;
@JsonProperty("AwardTitle")
private String awardTitle;
@JsonUnwrapped
private Effort effort;
}
public class Effort {
private String personFirstName;
private String personLastName;
}
请注意,此时我只期望API响应的Effort数组中有一个值。
接下来推荐尝试什么?谢谢!
1条答案
按热度按时间atmip9wb1#
最简单的方法是,如果您有一个JSON数组,那么就有一个
List<Effort>
。如果
Effort
始终有1个项,则返回的JSON不应将Effort
作为JSON数组,而应作为JSON对象。但是如果你只能用代码来处理它,你可以得到这样的代码 (注意,在Effort中应该总是包含一个项,否则它会抛出Exception):
您的
ObjectMapper
也需要启用DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS
:并且它应该具有以下输出:
注意,注解
@JsonUnwrapped
只能应用于JSON对象,而不能应用于JSON数组:值被序列化为JSON对象(无法使用此机制展开JSON数组)