微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用gson的JSON到java对象

我正在使用GSON库来形成一个Web服务的JSON,但我无法使它工作,我总是得到一个null.我已经看过类似的问题,如将Json转换为Java,如Simple Json to Java convertion using GSON.但我仍然遗漏了一些东西

JSON

{"A":"val1","B":"val2","C":"val3","D":"val4","E":"val5","F":"val6","G":"val7"}
         SiteWrapper m = gson.fromJson(json, SiteWrapper.class);

java类

SiteWrapper m = gson.fromJson(json, SiteWrapper.class);
System.out.println(m.getMenu());

static class Site {
    static String A;
    static String B;
    static String C;
    static String D;
    static String E;
    static String F;
    static String G;

    public String toString() {
        return String.format(A,B,C,D,E,F,G);}

    public static String getA() {
        return A;
    }
    public static String getB() {
        return B;
    } 
... all the way to getG

    public void setA(String A) {
        Site.A = A;
    }
    public void setB(String B) {
        Site.B = B;
    }
... all the way to setB

和我的包装

class SiteWrapper {
    private Site site;
    public Site getMenu() { return site; }
    public void setMenu(Site site) { this.site = site; }
}

无论我做什么,我得到一个空打印,任何想法?

解决方法:

由于它是一个静态的内部类.正如docs指出并评论

As well, if a field is marked as “static” then by default it will be
excluded. If you want to include some transient fields…

你可能想试试

 Gson gson = new GsonBuilder()
    .excludeFieldsWithModifier()
    .create();

此外,由于它是一个内部类,您可能需要更改您的JSON如果您可以:

 {
   "site":{
      "A":"val1",
      "B":"val2",
      "C":"val3",
      "D":"val4",
      "E":"val5",
      "F":"val6",
      "G":"val7"
   }
}

正如本post所述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐