Java:如何解析这个json

时间:2014-09-12 14:59:34

标签: java json

我想解析这个json以检索teluser_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();

2 个答案:

答案 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());