Java: Gson: fromJson: 获取元素值
Java: Gson: fromJson: Get element value
我有一个 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();
为了清楚起见,让我们先美化一下您的 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");
我有一个 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();
为了清楚起见,让我们先美化一下您的 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");