Java Jackson将字符串列表反序列化为字符串

Java Jackson将字符串列表反序列化为字符串,java,json,jackson,Java,Json,Jackson,有没有简单的方法将字符串列表反序列化为单个字符串 例如,我将使用以下JSON: { "stringList": [ "somethingElse" ], "simpleString": "something", } 我希望将其反序列化到此POJO中: @Data @JsonIgnoreProperties(ignoreUnknown = true) public class AClass { @JsonProperty("stringList"

有没有简单的方法将字符串列表反序列化为单个字符串

例如,我将使用以下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

这:

@JsonProperty("stringList")
private String justAString;
应该是一个字符串列表,你不觉得吗

@JsonProperty("stringList")
private List<String> justAString;
@JsonProperty(“stringList”)
私人名单调整;
这是:

@JsonProperty("stringList")
private String justAString;
应该是一个字符串列表,你不觉得吗

@JsonProperty("stringList")
private List<String> justAString;
@JsonProperty(“stringList”)
私人名单调整;

一种方法是对需要转换的属性使用替代的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;
    }

}
输出

justAString=[somethingElse]
someString=某物

一种方法是对需要转换的属性使用替代的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;
    }

}
输出

justAString=[somethingElse]
someString=某物

不需要,我只需要将属性stringList反序列化到字符串中,该字符串是字符串列表。另外,我没有AClass的列表,也不是真的,我只需要将属性stringList反序列化到字符串中,该字符串作为字符串列表出现。另外,我没有AClass列表。这是我想要避免的,但是如果没有简单的方法转换成普通字符串,那么这就是我要做的,比如格式化属性或类似的东西。这是我想要避免的,但是如果没有简单的方法转换成普通字符串,那么这就是我要做的,比如格式化属性之类的。