是否有一种简单的方法可以将字符串列表反序列化为单个字符串?
例如,我将使用以下JSON:
{
"stringList": [
"somethingElse"
],
"simpleString": "something",
}
我希望将其反序列化为该POJO:
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class AClass {
@JsonProperty("stringList")
private String justAString;
@JsonProperty("simpleString")
private String someString;
}
我想提到的是,可以肯定的是,该列表仅包含一项,并且无法控制其生成方式。 是为 justAString 字段添加自定义反序列化器的唯一方法吗?
编辑我想使用Jackson的 ObjectMapper 类
答案 0 :(得分:2)
一种方法是对需要转换的属性使用替代的getter / setter方法,即将@JsonProperty
注释从字段移至getter方法,添加额外的一组getter / setter方法,并使用{ {1}},因此@JsonIgnore
不使用它们:
ObjectMapper
测试
class AClass {
private String justAString;
private String someString;
@JsonProperty // JSON field named same as virtual property
private List<String> getStringList() { // Getter for virtual property (private = hidden from Java callers)
return Collections.singletonList(this.justAString);
}
private void setStringList(List<String> stringList) { // Setter for virtual property
this.justAString = stringList.toString();
}
@JsonIgnore // This POJO property is not a JSON field
public String getJustAString() { // Standard POJO getter
return this.justAString;
}
public void setJustAString(String justAString) { // Standard POJO setter
this.justAString = justAString;
}
@JsonProperty("simpleString") // JSON field named different from POJO property
public String getSomeString() { // Standard POJO getter
return this.someString;
}
public void setSomeString(String someString) { // Standard POJO setter
this.someString = someString;
}
}
输出
String input = "{\r\n" +
" \"stringList\": [\r\n" +
" \"somethingElse\"\r\n" +
" ],\r\n" +
" \"simpleString\": \"something\"\r\n" +
"}";
AClass aClass = new ObjectMapper().readValue(input, AClass.class);
System.out.println("justAString = " + aClass.getJustAString());
System.out.println("someString = " + aClass.getSomeString());
答案 1 :(得分:0)
此:
done
您应该认为应该是字符串列表吗?
@JsonProperty("stringList")
private String justAString;