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

使用GSON解析特定的JSON对象

赵嘉纳
2023-03-14

我有一个这样的JSON文件:

{
    "header0": "something",
    "header1": "something",
    "header2": "something",
    "data": {
          "value0": "something",
          "value1": "something",
          "value2": "something",
          "value3": "something",
          "value4": "something",
    }
}

如何使用Gson仅解析“数据”部分?我的想法是将JSON读入地图,然后用我在GSON中的键“数据”解析普通JSON内容。我能做些更优雅的事吗?

共有1个答案

佟嘉祯
2023-03-14

请记住-java中的POJO在定义对象以提高其易读性和可重用性方面很有用。如果必须选择,我会使用POJO类来表示响应,但这是主观意见。

对于POJO:

public class Root {

    public HashMap<String, String> data;
    //getter //setter //constructors
}
        Gson gson = new Gson();
        Root groot = gson.fromJson(json, Root.class);
        HashMap<String, String> yourHashMap = groot.getData();

不使用POJO(您的方法):

private static final JsonParser jsonParser = new JsonParser();

    public static void main(String[] args) {
        final String json = "<YOUR JSON>";
        final JsonObject rootObject = jsonParser.parse(json).getAsJsonObject();
        HashMap<String, String> yourHashMap = new Gson().fromJson(rootObject.get("data"),
                new TypeToken<HashMap<String, String>>() {
                }.getType());
        System.out.println(yourHashMap);
    }
 类似资料:
  • 问题内容: 我有一个像这样的JSON对象: 并尝试与Gson解析: 但是“ responceBean”始终为“ null” 这是所有其他类: 这是我的最新尝试。我不知何故找不到正确的方法。任何帮助将不胜感激。 问题答案: 您的 JSON模型与您的对象模型不匹配 。 您需要一个中间层来填补空白: TypeAdapter 。 而且,没有用户的命名信息。 最后是名称不匹配:JSON中的“ worklog

  • 问题内容: 我有一个JSON,它可以是单个对象或相同对象的数组。有没有一种方法可以使用Gson解析此数据,从而区分单个对象还是数组? 我目前唯一的解决方案是手动解析json并用try catch包围它。首先,我将尝试将其解析为单个对象,如果失败,它将引发异常,然后尝试将其解析为数组。 我不想手动解析它……那将使我永远。这是正在发生的事情的想法。 这是可以是数组或单个对象的对象。 然后在与json响

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

  • 服务器JSON数据显示在活动中使用改造。JSON数据通过gson转换。 给错误:"java.lang.IllegalState异常:预期BEGIN_ARRAY但BEGIN_OBJECT在第1行第2列路径$" JSON格式: 代码: 主要活动。kt

  • 问题内容: 我已经尝试了所有方法,但是解决方案非常丑陋,我真的想要一个直接的答案,是否可以改进(这意味着是否需要使用其他实现)。 问题在于带有GSON的Map of Maps: 根据Firebug给我以下回应: 大约有200个,但是只有两个。到目前为止,这是我在课堂上要解析的内容: 所以我这样访问数据: 但是正如您所看到的,这将是很长的时间。另一个问题是某些“值”中包含“&”号,这意味着我不能在此