clear()
方法是否清空JSON对象引用的值?
例如:
JSONObject obj = new JSONObject();
JSONObject objtemp = new JSONObject();
JSONArray arr = new JSONArray();
String[] details;
for (int i = 0; i < tempvals.length; ++i) {
objtemp.clear();
details = tempvals[i].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
objtemp.put("inspectionDate", details[7]);
objtemp.put("code", details[9]);
objtemp.put("description", details[10]);
objtemp.put("score", details[12]);
objtemp.put("grade", details[13]);
objtemp.put("gradeDate", details[14]);
arr.add(objtemp);
}
obj.put("violationDetails", arr);
arr.clear();
执行上述代码后,上述对象obj
为空。我使用clear方法的目的是防止在每次迭代时创建新对象。
答案 0 :(得分:1)
是的,它清除了参考。你只有一个参考。然后清除它,并向其添加数据(但您只有一个实例)。你需要像
这样的东西// JSONObject objtemp = new JSONObject();
for (int i = 0; i < tempvals.length; ++i) {
// objtemp.clear(); // <-- only one objtemp.
JSONObject objtemp = new JSONObject();
details = tempvals[i].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
objtemp.put("inspectionDate", details[7]);
objtemp.put("code", details[9]);
objtemp.put("description", details[10]);
objtemp.put("score", details[12]);
objtemp.put("grade", details[13]);
objtemp.put("gradeDate", details[14]);
arr.add(objtemp);
}
obj.put("violationDetails", arr);
// arr.clear(); // <-- would empty arr in `obj`.