Отображение строки Json на карту или поле hashmap в Java - PullRequest
2 голосов
/ 15 февраля 2012

Скажем, у меня есть следующая строка JSON, возвращенная с сервера:

{
    "response":{
        "imageInstances":{
            "one":{
                "id":"1",
                "url":"ONE"
            },         
            "two":{
                "id":"2",
                "url":"TWO"
            }
        }
    }  
}

в коде Хауса Джексона @JsonProperty, как мне получить HashMap объект из него?

import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonProperty;

import java.util.HashMap;
import java.util.List;

public class MSShow {
  @JsonProperty("imageInstances") private HashMap<String, Temp> images;//// HOW DO YOU CONVERT IT TO HASH MAP??????
  @JsonAnySetter public void ignoredField(String key, Object value) { }

  private class Temp {
    @JsonProperty("id") private String id;
    @JsonProperty("url") private String url;
    @JsonAnySetter public void ignoredField(String key, Object value) { }
    }
}

В конце дня я хочу, чтобы хеш-карта, сгенерированная на основе возвращенной строки JSON, была (написано в псевдо-Java)

должен вернуть мне объект Temp с полями id=1 и url=ONE, если я вызову

images.get("one")

должен вернуть мне объект Temp с полями id=2 и url=TWO, если я вызову

images.get("two") 

1 Ответ

3 голосов
/ 15 февраля 2012

Это должно работать как есть, с одной небольшой модификацией: вы используете дополнительную запись «ответ».Поэтому, как правило, вы можете использовать упаковку POJO, например:

class Wrapper {
  public MSShow response;
}

, чтобы правильно отобразить структуру.Или вы можете использовать UNWRAP_ROOT_VALUE Feature (из DeserializationConfig), чтобы сделать это автоматически, хотя имя класса должно совпадать, если это так.

Результатом действительно будет HashMap, если тип поля такой(что это такое).Если это не так, вы также можете использовать:

@JsonDeserialize(as=HashMap.class)

, чтобы использовать определенный подтип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...