Java:Gson:来自Json:获取元素值

wgeznvg7  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(209)

我有一个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中获取if 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();
bpsygsoo

bpsygsoo1#

为了清晰起见,我们先修饰一下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");

相关问题