当前位置: 首页 > 知识库问答 >
问题:

使用GSON解析JSON文件

华飞驰
2023-03-14
{
    "descriptor" : {
        "app1" : {
            "name" : "mehdi",
            "age" : 21,
            "messages": ["msg 1","msg 2","msg 3"]
        },
        "app2" : {
            "name" : "mkyong",
            "age" : 29,
            "messages": ["msg 11","msg 22","msg 33"]
        },
        "app3" : {
            "name" : "amine",
            "age" : 23,
            "messages": ["msg 111","msg 222","msg 333"]
        }
    }
}

我学习了这个教程http://www.mkyong.com/java/gson-streaming-to-read-and-write-json/,但它没有显示root和childs元素的情况。

共有1个答案

杜成和
2023-03-14

Imo中,使用GSON解析JSON响应的最佳方法是创建与响应“匹配”的类,然后使用GSON.fromjson()方法。
例如:

class Response {
    Map<String, App> descriptor;
    // standard getters & setters...
}

class App {
  String name;
  int age;
  String[] messages;
  // standard getters & setters...
}

然后只需使用:

Gson gson = new Gson();
Response response = gson.fromJson(yourJson, Response.class);

其中YourJSON可以是字符串、任何ReaderJSONReaderJSONElement

最后,如果您想访问任何特定的字段,您只需做以下操作:

String name = response.getDescriptor().get("app3").getName();

您总是可以像其他答案中建议的那样手动解析JSON,但我个人认为这种方法更清晰,更易于长期维护,而且更符合JSON的整体思想。

 类似资料:
  • 问题内容: 我想使用 GSON* 在 JAVA中 解析此 JSON 文件: *** 但是我不知道如何加入root元素: 描述符 ,之后是 app3 元素,最后是 name 元素。 我遵循了本教程http://www.mkyong.com/java/gson-streaming-to-read-and-write- json/ ,但是它没有显示具有root和childs元素的情况。 问题答案: Im

  • 问题内容: 我有一个非常简单的JSON,其中包含产品评论,例如: 我想使用GSON将其读入我的Java应用程序中。我建立了一个类来保存每个评论的结果: 要读取JSON文件,我的代码是: 使用此代码,我只能在JSON中检索第一个评论,所以我的问题是:如何遍历所有读者并获得下一个评论?我不需要将评论存储在列表中,只需要访问对象一次。任何帮助都超过了欢迎。 问题答案: 您必须获取列表中的全部数据,然后再

  • 所以错误发生在这里: 我认为我的JSON-Data是以错误的格式提供的。

  • 我正在使用凌空OkHttp从服务器获取一些数据。 响应是一个包含JSON的字符串,我想使用GSON/POJO解析它。 我得到错误: 预期BEGIN_OBJECT,但在第1行第1列路径$上是STRING 尝试解析时。 原因:java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行第1列路径$ com.google.gson.stream.JsonRead

  • 我有一个非常简单的产品评论JSON,比如: 我想用GSON把它读到我的Java应用程序中。我构建了一个类来保存每次复习的结果: 使用这段代码,我只能检索JSON中的第一个评论,所以我的问题是:如何遍历所有阅读器并获得下一个评论?我不需要将评论存储在列表中,只需要访问对象一次。任何帮助都大于欢迎。