使用jackson将String转换为Object

时间:2015-05-16 05:16:15

标签: java json jackson

我将获得以下格式的JSON

"address":
{
   "type": "Temporary"
}

以下是地址类。

class Address
{
    AddressType type;
    public Address(AddressType type)
    {
        this.type = type;
    }
}

class AddressType
{
    private String type;
    public AddressType(String type)
    {
        this.type = type;
    }
}

如果Address.java的类型为String,那么从JSON转换为Address对象会更容易。但我不确定如何将JSON转换为Address对象,其中“type”将转换为AddressType对象。我会用杰克逊图书馆。请帮帮我。

1 个答案:

答案 0 :(得分:1)

对于AddressType本身,它应该可以正常工作,因为Jackson会将字符串转换为对象具有公共构造函数的对象,该对象采用单个字符串。

对于序列化,您可能希望使用@JsonValue注释类型字段或getType方法来执行反向转换。

要使用给定的类型调用Address构造函数,需要在构造函数上使用@JsonCreator注释,并在其参数上使用@JsonProperty注释:

@JsonCreator
public Address(@JsonProperty("type") AddressType type) { ... }