2015-05-16 2 views
0

Я получаю JSON в следующем форматеПреобразование строки в объекте с помощью Джексона

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

Ниже класс Address.

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 имел тип, как строки, было бы легче перейти от JSON в адрес объекта. Но я не уверен, как я могу преобразовать JSON в адресный объект, где «тип» будет преобразован в объект AddressType. Я буду использовать библиотеку Джексона. Пожалуйста, помогите мне.

ответ

1

Для самого AddressType это должно работать так же, как оно есть, так как Jackson преобразует строку в объект, где объект имеет открытый конструктор, который принимает одну строку.

Для сериализации вам может понадобиться аннотировать тип поля или метод getType с помощью @JsonValue для выполнения обратного преобразования.

Чтобы иметь адреса конструктора под названием с типом заданного, вам нужны @JsonCreator аннотация конструктора и @JsonProperty аннотации по своим параметрам:

@JsonCreator 
public Address(@JsonProperty("type") AddressType type) { ... } 
Смежные вопросы