我想解析这个json以检索tel
或user_id
例如:
{
"status":"ok",
"account":{
"0":{
"user_id":"2",
"thirdparty_id":"200",
"tel":"28000000",
"mobile":"28000000",
"fax":"28000000"
}
}
}
以下是我尝试用来检索tel
的代码:
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject rootobj = root.getAsJsonObject();
JsonObject rootobj1 = (JsonObject) rootobj.get("account");
JsonObject rootobj2 = (JsonObject) rootobj.get("0");
String tel=rootobj2.get("tel").getAsString();
问题是此行引发java.lang.NullPointerException
:
String tel=tel=rootobj2.get("tel").getAsString();
答案 0 :(得分:1)
你有两个问题。首先,你实际上并没有下降树。像这样初始化rootobj2
:
JsonObject rootobj2 = (JsonObject) rootobj1.get("0"); // NOT rootobj.get("0");
其次,正确初始化rootobj2
后,它将没有属性"0"
。试试这个:
String tel=rootobj2.get("tel").getAsString(); // NOT rootobj2.get("0").getAsString();
答案 1 :(得分:1)
首先,如果您正确发布了JsonString,那么它不是有效的json,因为tel"
应该是"tel"
然后你可以使用org.json解析它
JSONObject jsonObject = new JSONObject(str);
JSONObject json1 = new JSONObject(jsonObject.get("account").toString());
JSONObject json2 = new JSONObject(json1.get("0").toString());
System.out.println(json2.get("user_id").toString());