在json数组中嵌套多个jsonobjects

时间:2016-04-05 05:55:14

标签: android json

我试图使用以下代码创建一个json数组。

private JSONArray getJsonArray(String encodedString) {
    JSONArray docArray = new JSONArray();
    JSONObject docprops = new JSONObject();
    JSONObject innerJson = new JSONObject();
    JSONArray innerJsonArray = new JSONArray();
    JSONObject inJobj = new JSONObject();
    JSONArray outerJsonArray = new JSONArray();
    SharedPreferences userDetails = getSharedPreferences("userdetails", Context.MODE_PRIVATE);
    String session = userDetails.getString("session", "");

    try {
        innerJson.put("compliance_history_id", compliance_history_id);

        docprops.put("file_size", fileSize);
        docprops.put("file_name", fileName);
        docprops.put("file_content", encodedString);

        docArray.put(docprops);

        innerJson.put("documents", docArray);
        innerJson.put("completion_date", mCompletedDate.getText().toString());
        innerJson.put("validity_date", JSONObject.NULL);
        innerJson.put("next_due_date", mNextDueDate.getText().toString());
        innerJson.put("remarks", mRemarks.getText().toString());

        innerJsonArray.put("UpdateComplianceDetail");
        innerJsonArray.put(innerJson);

        inJobj.put("session_token", session);
        inJobj.put("request", innerJsonArray);

        outerJsonArray.put(session);
        outerJsonArray.put(inJobj);

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

    return outerJsonArray;
}

这是我的代码正在构建的json ..

[
  "1-e4077f4a346440ecaeaf5f3387d47775",
  {
    "request": [
      "UpdateComplianceDetail",
      {
        "remarks": "Remarks",
        "next_due_date": "27-Mar-2016",
        "completion_date": "31-may-2017",
        "validity_date": null,
        "documents": [
          {
            "file_name": "20160404_135811.jpg",
            "file_size": 24,
            "file_content": "iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mA"
          }
        ],
        "compliance_history_id": 49
      }
    ],
    "session_token": "1-e4077f4a346440ecaeaf5f3387d47775"
  }
]
  1. 可能有多个文档正在上传,因此document数组可能包含多个json对象。我怎么能这样做?
  2. 除了使用gson或jackson之外,有什么办法可以优化上面的代码吗?

2 个答案:

答案 0 :(得分:1)

如果documents是一个数组,则遍历JSONArray对象

JSONArray jsonObjectArray= updateComplianceDetailresponse.getJSONArray("documents");
LinkedList arrayCompliance=new LinkedList();
for(int count=0;count<jsonObjectArray.length();count++){
   // iterate and get required elements
   //Add to arrayCompliance LinkedList

}

答案 1 :(得分:1)

如果docArray中可能有多个对象,则下面的行应该在for循环中。

    JSONObject docprops = new JSONObject();
    docprops.put("file_size", fileSize);
    docprops.put("file_name", fileName);
    docprops.put("file_content", encodedString);
    docArray.put(docprops);

根据文档对象的数量,你可以迭代for循环,每次迭代创建一个jsonObject并将它放在docArray中