Java

时间:2018-12-04 07:25:38

标签: java json jsonparser

我有一个json字符串,需要使用java解析。格式为-

input = {"data":{"value":[654,123]},"address":null,"code":null}

因此,我只需要“值”:[654,123]

我尝试过,但是-

JSONParser parse = new JSONParser();
JSONObject jobj = (JSONObject)parse.parse(input);

JSONArray jsonarr_1 = (JSONArray) jobj.get("value");
System.out.println(jsonarr_1);

for(int i=0;i<jsonarr_1.size();i++)
{
    JSONObject jsonobj_1 = (JSONObject)jsonarr_1.get(i);
    JSONArray jsonarr_2 = (JSONArray) jsonobj_1.get("value");
    System.out.println("values under value array");
    System.out.println(jsonarr_2);
}   
}

是json数组的第一级,并提供nullpointerexception

1 个答案:

答案 0 :(得分:1)

您首先需要获取数据Json对象,然后从中读取值数组。 您可以在下面看到工作代码:

    String input = "{\"data\":{\"value\":[654,123]},\"address\":null,\"code\":null}";

    JSONParser parse = new JSONParser();
    JSONObject jobj = (JSONObject) parse.parse(input);

    JSONObject dataObj = (JSONObject) jobj.get("data");
    JSONArray jsonarr_1 = (JSONArray) dataObj.get("value");
    System.out.println(jsonarr_1);

    for (int i = 0; i < jsonarr_1.size(); i++) {
        System.out.println("values under value array");
        long value = (long) jsonarr_1.get(i);
        System.out.println(value);
    }