2016-10-04 3 views
1

Моя цель - преобразовать jsonObject в класс. Я хочу добавить только поля, которые были анотированы в классе. Пример: объект json содержит 50 полей. Класс имеет 4 поля. Я хочу отображать только точные 4 поля, не добавляя в класс лишние игнорирования.Jackson ObjectMapper игнорирует все свойства, у которых нет аннотации

JSON:

{ 
    "id": "1", 
    "name": "John", 
    "Address": "Some Address 7009", 
} 

Класс:

public static class User { 
    Integer id; 
    String name; 

    public User (@JsonProperty("id")Integer id, @JsonProperty("name")String name { 
      this.id= id; 
      this.name= name; 
    } 
    .... 
} 

класс Пользователь не имеет поле адреса. Моя цель - исключить его, потому что у него нет аннотации.

+0

Вам нужно добавить @JsonIgnore для оставленных объектов, которые вы не хотите – Nimesh

+0

Вы прочитали мой вопрос? – TeodorKolev

+0

Невозможно таким образом. Вы можете назначить @JsonIgnore на оставшиеся свойства или вы можете сделать поворот, который вы можете изменить ключ json, который не соответствует свойствам объекта, наоборот, что бы это ни было возможно. – Nimesh

ответ

3

аннотировать класс с @JsonIgnoreProperties, следующим образом:

@JsonIgnoreProperties(ignoreUnknown = true) 
public class User { 
    ... 
} 

Когда ignoreUnknown является true, все свойства, которые являются непризнанными (то есть, нет сеттеры или создатели, которые принимают их) игнорируются без предупреждений (хотя обработчики для неизвестных свойств, если они есть, будут по-прежнему вызываться) без исключения.

+0

Используется, когда любое новое свойство, которое недоступно в классе – Nimesh

+0

@Naman Не могли бы вы прояснить свой комментарий? –

+0

TeodorKolev имеет 40 объектов класса и 40 ключей в json, и он хочет только 4 свойства, преобразованные в свойство объекта Java. Остальное должно быть значением по умолчанию, например null, 0 или любым другим. Предоставление аннотации на уровне классов не решит эту проблему – Nimesh