【发布时间】:2018-04-23 11:23:16
【问题描述】:
我刚开始使用 java JSON 库 (org.json.simple.JSONObject)。 在我的代码中,我需要制作一个 JSONOBJECTS 的 JSONARRAY, 但是,我没有在我的数组中找到 3 个不同的对象,而是找到了最后一个重复的对象。
功能代码:
private void setMesurement(Date[] ts, Integer[][] time, String mesurementLabel, Object[][] mesurementValue, Integer[][] unit ) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.FRENCH);
JSONArray measurements = new JSONArray();
JSONObject series = new JSONObject();
JSONArray $_time = new JSONArray();
JSONArray msrVal = new JSONArray();
JSONArray unitVal = new JSONArray();
JSONObject msr = new JSONObject();
for (int i=0; i<ts.length; i++) {
$_time.clear();
msrVal.clear();
unitVal.clear();
for (int j=0; j<time[i].length; j++) {
$_time.add(time[i][j]);
msrVal.add(mesurementValue[i][j]);
unitVal.add(unit[i][j]);
}
series.put("$_time", $_time);
series.put(mesurementLabel, msrVal);
series.put("unit", unitVal);
msr.put("series", series);
msr.put("ts", dateFormat.format(ts[i]));
measurements.add(msr);
}
this.ppmp.put("measurements", measurements);
System.out.println("adding measurements: "+measurements+" to ppmp");
}
这是重复的结果:
"measurements":[
{"series":{
"heat":[7,8,9],
"unit":[2,2,2],
"$_time":[0,16,36]},
"ts":"2018-04-23T11:30:35.587+0100"},
{"series":{
"heat":[7,8,9],
"unit":[2,2,2],
"$_time":[0,16,36]},
"ts":"2018-04-23T11:30:35.587+0100"},
{"series":{
"heat":[7,8,9],
"unit":[2,2,2],
"$_time":[0,16,36]},
"ts":"2018-04-23T11:30:35.587+0100"}
]
【问题讨论】:
-
您应该为 JSON 中的每个新对象重新初始化对象。在 for 循环中移动
JSONObject series = new JSONObject(); JSONArray $_time = new JSONArray(); JSONArray msrVal = new JSONArray(); JSONArray unitVal = new JSONArray(); JSONObject msr = new JSONObject(); -
您确定问题的标题吗?空指针发生在哪里?
-
很抱歉,你是对的,我弄错了问题的标题,当前真正的问题是描述中的重复输出