java - 使用 gson 将 JSON 转换为 java 对象

标签 java android json gson

我正在使用 GSON 库来处理来自 Web 服务的 JSON,但我无法让它工作,我总是得到一个空值。我已经查看了类似的问题,例如 Converting Json to Java such as 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 中所述

关于java - 使用 gson 将 JSON 转换为 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368624/

相关文章:

java - 如何让 Quartz 作业在多 ApplicationContext 环境中运行?

java - SQLite,以数组形式返回数据

javascript - Parse.com 云代码访问查询结果中的用户对象为 null

c# - Linq groupby 列表匹配和计数

java - 使用 Spring MVC HandlerInterceptorAdapter 从 HttpServletResponse 记录响应正文 (HTML)

Java + Hadoop + NoSql(使用什么组合)

java - `malloc` 和 `free` Java NDK Wrap 是克服 Android 自动回收的唯一方法吗?

javascript - 我正在制作一个 RSS 阅读器,并希望显示文章中的图片(如果有)。我该如何获取这些照片?

java - Android 选项卡被点击

android - 如何将解析后的 JSON 数据存储到 SQLite 中