Android从数据创建Json对象字符串

时间:2016-04-17 12:05:03

标签: android arrays json

我想从可用数据

创建这样的Json String

Json String:

{
  "1": {
    "attendance_user_status": 1
  },
  "2": {
    "attendance_user_status": 0
  },
  "3": {
    "attendance_user_status": 1
  },
  "4": {
    "attendance_user_status": 1
  },
  "5": {
    "attendance_user_status": 1
  },
  "6": {
    "attendance_user_status": 0
  },
  "7": {
    "attendance_user_status": 1
  }, ...
}

我写了这个java代码..

public String jsonCreator(ArrayList<Attendance> attendanceArrayList) throws JSONException {
    JSONObject object = new JSONObject();
    JSONArray jsonArray = new JSONArray();
    for(int i = 0;i<attendanceArrayList.size();i++){
        JSONObject objId = new JSONObject();

        JSONObject objAtt = new JSONObject();
        objAtt.put("attendance_user_status",attendanceArrayList.get(i).getValue());

        objId.put(attendanceArrayList.get(i).getId(),objAtt);
        jsonArray.put(objId);
    }
    object.put("user",jsonArray);

    return object.toString();
}

但是使用这段代码我得到了这个数组,不是我要求的。

{
  "user": [
    {
      "1": {
        "attendance_user_status": "2"
      }
    },
    {
      "2": {
        "attendance_user_status": "1"
      }
    },
    {
      "3": {
        "attendance_user_status": "1"
      }
    },
    {
      "4": {
        "attendance_user_status": "1"
      }
    }
  ]
}

我想附加json对象,但不是json数组。

2 个答案:

答案 0 :(得分:0)

除了json之外,您永远不会初始化String json = "";,因此会返回一个空字符串。

您必须从json对象获取字符串并将其设置为json。 在方法结束时执行以下操作:

 json = objId.toString();
 return json;

答案 1 :(得分:0)

试试这样:

public String jsonCreator(ArrayList<Attendance> attendanceArrayList) throws JSONException {
   JSONArray jsonArray = new JSONArray();
   for(int i = 0;i<attendanceArrayList.size();i++){
       JSONObject objId = new JSONObject();

       JSONObject objAtt = new JSONObject();
       objAtt.put("attendance_user_status",attendanceArrayList.get(i).getValue());

       objId.put(attendanceArrayList.get(i).getId(),objAtt);
       jsonArray.put(objId);
   }

   return jsonArray.toString();
}