当前位置: 首页 > 面试题库 >

使用GSON解析JSON文件

樊腾
2023-03-14
问题内容

我想使用 GSON*JAVA中 解析此 JSON 文件: ***

{
    "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"]
        }
    }
}

但是我不知道如何加入root元素: 描述符 ,之后是 app3 元素,最后是 name 元素。

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


问题答案:

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

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可以是a
String,any
Reader,a
JsonReader或a
JsonElement

最后,如果要访问任何特定字段,只需要做:

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

您总是可以按照其他答案中的建议手动解析JSON,但就我个人而言,我认为这种方法更清晰,更长期可维护,并且更适合JSON的整体思想。



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

  • 问题内容: 我有一个非常简单的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中的第一个评论,所以我的问题是:如何遍历所有阅读器并获得下一个评论?我不需要将评论存储在列表中,只需要访问对象一次。任何帮助都大于欢迎。