Gson десериализуется в JsonObject вместо определенного объекта - PullRequest
1 голос
/ 30 января 2020

У меня есть json, как это

{ 
    "host":"a-host.com",
    "port":1234,
    "other":{ 
        "messageVersion":1,
        "anotherObject":{ 

        }
    }
}

Мое намерение состоит в том, чтобы проанализировать json, за исключением того, что в "другом". Возможно ли это?

В настоящее время я могу успешно проанализировать все поля, но когда дело доходит до «другого» поля, я получаю пустой объект «{}». Почему это происходит?

    @SerializedName("host")
    private String host;
    @SerializedName("port")
    private int port;
    @SerializedName("other")
    private JsonObject other;

Ответы [ 2 ]

1 голос
/ 30 января 2020

Если вы не хотите анализировать «другое», просто удалите связанный с ним код из DTO / POJO и запустите программу. Должно работать нормально.

@SerializedName("other")
private JsonObject other;
0 голосов
/ 30 января 2020

Вы можете проверить следующий код.

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;

public class GSONExample {

    private static String json = "YOUR JSON";

    public static void main(String[] args) {
        Gson gson = new GsonBuilder().create();
        ItemDob itemDob = gson.fromJson(json, ItemDob.class);
        System.out.println(itemDob.getOther());
    }

}

class ItemDob {
    private String host;
    private int port;
    private JsonObject other;

    public String getHost() {
        return host;
    }

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

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public JsonObject getOther() {
        return other;
    }

    public void setOther(JsonObject other) {
        this.other = other;
    }
}

Значение other (itemDob.getOther ()) печатается как

{"messageVersion": 1, " anotherObject ": {}}

...