【问题标题】:Java: Gson: fromJson: Get element valueJava: Gson: fromJson: 获取元素值
【发布时间】:2020-10-19 17:41:04
【问题描述】:

我有一个 json 字符串:

string jsonString = "{"Header":{"ID": "103","DateTime": "2020-07-29 09:14:23.802-4:00 1","PlazaID": "01","Lane": "Lane 20","IPAddr": "192.9.0.123"},"Body": {"EventMsg": "Status: Online","EventNum": "99999"}}";

我正在尝试使用 Gson 从上面的 json 中获取 ID 的值,它给了我 NullPointerException。我的代码:

JsonObject jsonObject = new Gson().fromJson(jsonString, JsonObject.class );                                        
//System.out.println("jsonObject: " + jsonObject.toString());
String _ID = jsonObject.get("ID").getAsString();

我不确定我的代码中的错误在哪里。任何帮助表示赞赏。

编辑: 根据@Arvind 的建议,我尝试了他的代码并收到此错误:

根据@Arvind 的建议,这是可行的:

String _ID = jsonObject.get("Header").getAsJsonObject().get("ID").getAsString();

【问题讨论】:

    标签: java gson


    【解决方案1】:

    为了清楚起见,让我们先美化你的jsonString

    {
      "Header": {
        "ID": "103",
        "DateTime": "2020-07-29 09:14:23.802-4:00 1",
        "PlazaID": "01",
        "Lane": "Lane 20",
        "IPAddr": "192.9.0.123"
      },
      "Body": {
        "EventMsg": "Status: Online",
        "EventNum": "99999"
      }
    }
    

    注意"ID""Header" 内部,所以你必须这样解析它:

    String _ID = jsonObject.getJsonObject("Header").get("ID").getAsString();
    

    另外,避免使用get(),因为有更好的方便方法:

    String _ID = jsonObject.getJsonObject("Header").getString("ID");
    

    【讨论】:

    • 编译器是怎么说的? (编辑你的问题,如果它太大,把它放在那里)
    • 我试过 gson-2.8.6.jar 和 gson-2.6.2.jar 都抱怨在 JsonElement 中找不到“get”方法(第二个 get 方法)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多