Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java仅追加最后记录的JSON对象_Java_Json - Fatal编程技术网

使用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

我正在迭代一个列表对象,并使用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"}
应该还有一张唱片

我遗漏了什么吗

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