JSON对象仅使用Java附加最后的记录

时间:2016-03-22 09:39:35

标签: java json

我正在迭代列表对象并使用Java创建JSON对象。我的列表有两条记录,但它只附加了最后一条记录。这是我的代码

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"}

还应该有一个记录。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您必须将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;