使用Java仅追加最后记录的JSON对象
我正在迭代一个列表对象,并使用Java创建一个JSON对象。我的列表有两条记录,但它只附加了最后一条记录。这是我的密码使用Java仅追加最后记录的JSON对象,java,json,Java,Json,我正在迭代一个列表对象,并使用Java创建一个JSON对象。我的列表有两条记录,但它只附加了最后一条记录。这是我的密码 JSONObject obj = new JSONObject(); try (Session session = factory.openSession()) { String hql = "FROM Personalisation E WHERE E.userId = "+id; Query query = sessio
JSONObject obj = new JSONObject();
try (Session session = factory.openSession()) {
String hql = "FROM Personalisation E WHERE E.userId = "+id;
Query query = session.createQuery(hql);
List<?> results = query.list();
for(int i = 0; i < results.size(); i++) {
Persona p = (Person) results.get(i);
System.out.println(p.getCourseId());
obj.put("courseId", p.getCourseId());
obj.put("CourseValue", (JSONObject)new JSONParser().parse(p.getCourseValue()));
}
} catch (Exception e) {
e.printStackTrace();
}
结果是
C5 <-- Course ID
C6 <-- Course ID
{"CourseValue":{"color":"blue","value":"#f00"},"courseId":"C6"}
应该还有一张唱片
我遗漏了什么吗 您必须将JsonObject实例存储在数组中,我以gson为例,因为您尚未指定要使用的框架:
JsonArray array = new JsonArray();
try (Session session = factory.openSession()) {
String hql = "FROM Personalisation E WHERE E.userId = "+id;
Query query = session.createQuery(hql);
List<?> results = query.list();
for(int i = 0; i < results.size(); i++) {
JSONObject obj = new JSONObject();
Persona p = (Person) results.get(i);
System.out.println(p.getCourseId());
obj.put("courseId", p.getCourseId());
obj.put("CourseValue", (JSONObject) new JSONParser().parse(p.getCourseValue()));
array.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
}
return array;
Json对象更像映射,因此您总是覆盖以前的记录。改用json数组大多数库都有类似JSONArray的类,并为每条记录创建一个新的json对象。@Thomas,你能给我一个参考或更新代码吗?我想你已经在使用某种json库了,看看它的文档。我用的是org.json.simple package的JSONArray。好的,然后,只需在循环之前创建数组并在其中创建对象,最后调用array.addobj。