以编程方式创建json数组会产生错误

时间:2016-03-29 11:06:21

标签: android

我试图按如下方式构建一个json,

{
    "session_token": "f3bb3e20d38d4624930636de074a0df0",
    "request": [
        "ApproveStatutoryMapping", {
            "statutory_mappings": [{
                "statutory_mapping_id": 3,
                "statutory_provision": "POG ActPOG Act>>State Rule All",
                "approval_status": 1,
                "rejected_reason": null,
                "notification_text": null
            }]
        }
    ]
}

以下是我的代码,

  private JSONObject frameApproveJson() {

        JSONObject rootJson = new JSONObject();
        try {
            JSONObject innerJobj = new JSONObject();
            innerJobj.put("statutory_mapping_id", "3");
            innerJobj.put("statutory_provision", "POG ActPOG Act>>State Rule All");
            innerJobj.put("approval_status", "1");
            innerJobj.put("rejected_reason", null);
            innerJobj.put("notification_text", null);

            JSONArray innerJarr = new JSONArray();
            innerJarr.put("statutory_mappings");
            innerJarr.put(innerJobj);

            JSONArray inJarr = new JSONArray();
            inJarr.put("ApproveStatutoryMapping");
            inJarr.put(innerJarr);

            rootJson.put("session_token", "806915cf50ab4997b7b135f539fe949b");
            rootJson.put("request", inJarr);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return rootJson;
    }

问题是我的代码没有框架所需的json。那是什么,我失踪了。在将所有值添加到rootjson对象后,我甚至返回了根json对象。然而同样的问题仍然存在

2 个答案:

答案 0 :(得分:1)

innerJarr应该是一个对象而不是一个数组。

更换

JSONArray innerJarr = new JSONArray();
innerJarr.put("statutory_mappings");
innerJarr.put(innerJobj);

通过

JSONObject innerJarr = new JSONObject();
JSONArray innerJarrBis = new JSONArray();
innerJarrBis.put(innerJobj);
innerJarr.put("statutory_mappings", innerJarrBis);

应解决问题

答案 1 :(得分:1)