0

我应该收到JSON这样的

{
    "browse": [
        {
            "title": "Program Translations"
        }
    ],
    "errorno": "fe_200",
    "message": "Your browse history"
}

但由于没有浏览信息,我得到它这样..

{"errorno":"fe_3946","message":"No browse history found.","browse":"NULL"}

这是完全正常的。

我写过这样的java类..

class BrowseHistoryJson {

      public BrowseHistoryJson() {}

      private String errorno;
      private String message;
      private List<Browse> browse;
      // other attributes

      public String getErrorNo() {
        return errorno;
      }
      public String getMessage() {
            return message;
          }
      public List<Browse> getResults() { return browse; }
      public void setErrorNo(String errorno) {
            this.errorno = errorno;
          }
      public void setMessage(String message) {
        this.message = message;
      }

      public void setResults(List<Browse> browse) { this.browse = browse; }
      public String toString() { return "Results[" + browse + "]";}


      static class Browse {
            private String title;


            public String getTitle() {
                return title;
            }


            public void setTitle(String title) {
                this.title = title;
            }


            public String toString() { return "Result[title:" + title +"]"; }
        }

    }

现在当我执行语句时

BrowseHistoryJson 结果 = new Gson().fromJson(reader, BrowseHistoryJson.class);

我得到了例外

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 74   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
at com.google.gson.Gson.fromJson(Gson.java:795)
at com.google.gson.Gson.fromJson(Gson.java:734)

当我在数组中获取数据时,它工作得很好browse

如何添加null处理,例如预先声明该值可能为空的某种方式?

我检查了 JSON 笔记并在互联网上搜索,但没有什么真正有用的。

4

1 回答 1

1

您需要使用 GsonBuilder 对象来创建您的 Gson 对象。

Gson gson = new GsonBuilder().serializeNulls().create();//handle null

当您这样做时,gson 将适当地处理空值。

于 2013-03-29T19:02:54.187 回答