[英]Jackson deserialize list of strings to a string
有沒有一種簡單的方法可以將字符串列表反序列化為單個字符串?
例如,我會有這個 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類
一種方法是對需要轉換的屬性使用替代的 getter/setter 方法, @JsonProperty
注釋從字段移動到 getter 方法,添加一組額外的 getter/setter 方法,並使用@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());
輸出
justAString = [somethingElse]
someString = something
這個 :
@JsonProperty("stringList")
private String justAString;
應該是一個字符串列表,你不覺得嗎??
@JsonProperty("stringList")
private List<String> justAString;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.