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

来源:爱站网时间:2022-12-21编辑:网友分享
java字符串列表反序列化为单个字符串用什么方法比较好你知道吗,想要学习这方面知识点的小伙伴可以看看下面的知识点,我们提供了一些解决思路给大家,希望对你们有所帮助。

问题描述


是否有一种简单的方法可以将字符串列表反序列化为单个字符串?

例如,我将使用此JSON:

{
    "stringList": [
        "somethingElse"
    ],
    "simpleString": "something",
}

我希望将其反序列化到此POJO中:

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class AClass {

    @JsonProperty("stringList")
    private String justAString;

    @JsonProperty("simpleString")
    private String someString;
}

我想提一下,可以肯定的是,列表仅包含一项,并且无法控制其生成方式。为justAString字段使用自定义反序列化器的唯一方法是吗?

EDIT如果可能,我想使用Jackson的ObjectMapper

思路一:


this:

@JsonProperty("stringList")
private String justAString;

应该是字符串列表,您不认为吗?

@JsonProperty("stringList")
private List justAString;

思路二:


一种方法是对需要转换的属性使用备用的getter / setter方法,即,将@JsonProperty注释从字段移至getter方法,添加额外的一组getter / setter方法,然后使用@JsonIgnore ObjectMapper不使用它们:

class AClass {

    private String justAString;
    private String someString;

    @JsonProperty // JSON field named same as virtual property
    public List getStringList() { // Getter for virtual property
        return Collections.singletonList(this.justAString);
    }

    public void setStringList(List stringList) {
        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;
    }

}

Test

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

java字符串列表反序列化为单个字符串内容小编在此给大家一一整理出来了,有需要的话就来看一看吧,一定能让你收获很多不同的知识点,如果觉得不错,随时都能关注js.aizhan.com平台。

上一篇:for循环的运行时遇到问题解决方法

下一篇:以嵌套方式使用多个@JsonSubType注释

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载