我有一个来自Java脚本的json字符串:

[{"clientNumber":"33"},{"clientName":"3"},{"clientEik":"3"}]


当我将其放入servlet时,这就是我正在做的事情:

JSONArray jsonArr = new JSONArray(URLDecoder.decode(mainData, "UTF-8"));
dataObj.put("data", jsonArr);


现在看起来像:

{"data":[{"clientNumber":"33"},{"clientName":"3"},{"clientEik":"3"}]}


我正在尝试通过以下方式获取clientNumber

dataObj.getString("clientNumber")

但是它轰炸了我,但有一个例外:

org.json.JSONException: JSONObject["clientNumber"] not found.

为什么我无法访问它?我知道我缺少了很小的一部分,但是我无法下定决心找到它。

最佳答案

看来data字段是一个JSONArray。您需要按索引获取元素,请引用代码:

更新:

使用getJSONObject(index).getString(key)访问数据:

try {
        String data = "[{\"clientNumber\":\"33\"},{\"clientName\":\"34\"},{\"clientEik\":\"35\"}]";

        JSONArray jsonArr = new JSONArray(URLDecoder.decode(data, "UTF-8"));
        JSONObject dataObj = new JSONObject();
        dataObj.put("data", jsonArr);

        JSONArray jsonarr = dataObj.getJSONArray("data");

        String clientNumber = jsonarr.getJSONObject(0).getString(
                "clientNumber");
        System.out.println(clientNumber);
        String clientName = jsonarr.getJSONObject(1)
                .getString("clientName");
        System.out.println(clientName);
        String clientEik = jsonarr.getJSONObject(2).getString("clientEik");
        System.out.println(clientEik);

    } catch (Exception e) {
        e.printStackTrace();
    }

09-28 07:21