2013-08-28 3 views
2

У меня есть JSonдесериализации JSON, используя Джексон 2

 
[ 
    { 
    "host": { 
     "name": "anotherfullhost", 
     "id": 55602819, 
     "operatingsystem_id": 1073012828, 
     "hostgroup_id": null 
    } 
    }, 
    { 
    "host": { 
     "name": "dhcp.mydomain.net", 
     "id": 219245707, 
     "operatingsystem_id": 1073012828, 
     "hostgroup_id": null 
    } 
    }, 
    { 
    "host": { 
     "name": "my5name.mydomain.net", 
     "id": 980190962, 
     "operatingsystem_id": 1073012828, 
     "hostgroup_id": null 
    } 
    } 
] 

Я хотел бы построить Коллекцию десериализации выше JSON. Какие аннотации к Jackson следует добавить к нижеуказанному классу хоста

 

public class Host { 
    @JsonProperty("id") 
    private Long id; 

    @JsonProperty("name") 
    private String name; 

    @JsonProperty("operatingsystem_id") 
    private Long operatingSystemId; 

    @JsonProperty("hostgroup_id") 
    private Long hostGroupId; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public Long getOperatingSystemId() { 
     return operatingSystemId; 
    } 

    public void setOperatingSystemId(Long operatingSystemId) { 
     this.operatingSystemId = operatingSystemId; 
    } 

    public Long getHostGroupId() { 
     return hostGroupId; 
    } 

    public void setHostGroupId(Long hostGroupId) { 
     this.hostGroupId = hostGroupId; 
    } 

    @Override 
    public String toString() { 
     return "Host{" + 
       "name='" + name + '\'' + 
       '}'; 
    } 
} 

 

Любые предложения?

Примечание. Я использую API jackson 2.x.

Спасибо.

Обновление Добавление объекта-обертки делает трюк.

 

public class HostWrapper { 
    @JsonProperty("host") 
    private Host host; 

    public Host getHost() { 
     return host; 
    } 

    public void setHost(Host host) { 
     this.host = host; 
    } 

    @Override 
    public String toString() { 
     return host.toString(); 
    } 
} 

and the below code to deserialize 

     ObjectMapper mapper = new ObjectMapper(); 
     HostWrapper[] host = mapper.readValue(jsonString, HostWrapper[].class); 


 
+0

Что происходит, когда вы используете код, который вы сейчас? – Johanneke

+0

Я делаю «Host [] host = mapper.readValue (jsonString, Host []. Class);" и я получаю исключение - вызвано: com.fasterxml.jackson.databind.JsonMappingException: текущий токен не START_OBJECT (необходимо развернуть имя root 'Host []'), но START_ARRAY –

+0

Я даже попытался создать объект-оболочку с именем HostWrapper, который имеет свойство Host, но это тоже дает то же исключение. –

ответ

Смежные вопросы