Метод GSON toJson () возвращает ноль для POJO - PullRequest
0 голосов
/ 11 декабря 2018

Это мой класс POJO

public class ResourceRecord {

    public ResourceRecord() {}

    public String name;
    public Integer ttl;
    public String type;
    public String rr;

    @SerializedName("class")
    public String dnsClass;

}

А это сериализация:

ResourceRecord rr = new ResourceRecord() {
    {
        name = "8.8.8.8";
        dnsClass = "IN";
        ttl = 600;
        rr = "0431shangmao.com.";
        type = "A";
    }
};

String rrStr = new Gson().toJson(rr);

Видимо, rrStr получает null.Почему?

Я пытался пометить поля с помощью @Expose, но результат остался прежним.

ОБНОВЛЕНИЕ: Я изменил конструкцию на:

ResourceRecord rr = new ResourceRecord("8.8.8.8", 900,"A","1.dnstest.netshade.net.", "IN");

и это сработало.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Причина, по которой это не сработало, заключается в том, что вы создавали анонимный внутренний класс ResourceRecord при создании экземпляра с помощью фигурных скобок:

ResourceRecord rr = new ResourceRecord() {
      {
          name = "8.8.8.8";
          dnsClass = "IN";
          ttl = 600;
          rr = "0431shangmao.com.";
          type = "A";
      }
  };

А Gson не поддерживает сериализацию анонимных подклассов.

0 голосов
/ 11 декабря 2018

Попробуйте,

Gson gson = new GsonBuilder().create(); String json = gson.toJson(obj);

obj - объект класса pojo

...