Java Jackson json将字符串和数组绑定到列表<;字符串>;在地图里面
我想将json字符串和数组映射到Java列表。Java类如下所示Java Jackson json将字符串和数组绑定到列表<;字符串>;在地图里面,java,json,spring,spring-boot,jackson,Java,Json,Spring,Spring Boot,Jackson,我想将json字符串和数组映射到Java列表。Java类如下所示 public class MyDTO { private String identifier; @JsonFormat(with=Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private Map<String, List<String>> parameters; public String getIdentifier() {
public class MyDTO {
private String identifier;
@JsonFormat(with=Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
private Map<String, List<String>> parameters;
public String getIdentifier() {
return identifier;
}
public void setIdentifier(String identifier) {
this.identifier = identifier;
}
public Map<String, List<String>> getParameters() {
return parameters;
}
public void setParameters(Map<String, List<String>> parameters) {
this.parameters = parameters;
}
}
公共类MyDTO{
私有字符串标识符;
@JsonFormat(with=Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
私有映射参数;
公共字符串getIdentifier(){
返回标识符;
}
公共无效集合标识符(字符串标识符){
this.identifier=标识符;
}
公共映射getParameters(){
返回参数;
}
公共void setParameters(映射参数){
此参数=参数;
}
}
我希望以下两个json示例都能正确映射到上面的Java类
//样本1
{“标识符”:“myIdentifier”,“参数”:{
“参数1”:“值”}
//样本2
{“标识符”:“myIdentifier”,“参数”:{
“param1”:[“value1”,“value2”]}
我已经尝试使用ACCEPT\u SINGLE\u VALUE\u作为映射属性的\u数组,但我认为它没有应用到内部列表
有什么解决办法吗
谢谢。
@JsonFormat
不是配置此类反序列化的合适注释。基于注释的POJO配置将不会产生正确的结果。相反,接受原始JSON字符串,然后使用objectmapper使用所需的配置进行反序列化
String json1 = "{ \"identifier\": \"myIdentifier\", \"parameters\":{ \"param1\": \"value\" } }\n";
String json2 = "{ \"identifier\": \"myIdentifier\", \"parameters\":{ \"param1\": [\"value1\", \"value2\"] } }";
ObjectMapper mapper = new ObjectMapper();
//mapper.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
try {
MyDTO obj1 = mapper.readValue(json1, MyDTO.class);
MyDTO obj2 = mapper.readValue(json2, MyDTO.class);
}catch (Exception e){
// handle
}