десериализовать поле json в простую строку с помощью gson - PullRequest
9 голосов
/ 21 марта 2011

Я пытаюсь десериализовать объект json в Java-бин.Основная проблема, с которой я сталкиваюсь, заключается в том, что я хотел бы рассматривать поле object строки json как простую строку, даже если оно содержит потенциально правильный объект json.Структура json выглядит следующим образом:

{
    "type":"user",
    "object":{
        "id":"1", 
        ...}
}

Как я могу сказать gson игнорировать значение object, чтобы оно не десериализовалось в объект?Мне бы хотелось, чтобы оно отображалось только в простое поле String в моем бине, чтобы я мог правильно настроить его десериализацию, как только я получил тип из поля type.

Ответы [ 2 ]

11 голосов
/ 28 мая 2014

Просто объявите его как тип JsonObject

class ExampleJsonModel {
    @SerializedName("type")
    public String type;

    @SerializedName("object")
    public JsonObject object;
}
1 голос
/ 12 апреля 2011

Я не знаю, решена ли ваша проблема.Я столкнулся с похожим вопросом, и вот как я его решил:

JsonDeserializer позволяет вам создать собственный адаптер для десериализации этого **:

class JavaBeanDeserializer implements JsonDeserializer<JavaBeanObject>() {
    public JavaBeanObject fromJson(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
    // return JavaBeanObject built using your logic.
}

Вы должны зарегистрировать JavaBeanDeserializer для объекта Gson при его создании:

Gson gson = new GsonBuilder().registerTypeAdapter(JavaBeanObject.class, new JavaBeanDeserializer()).create();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...