Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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在lopp中具有循环_Java_Json_Spring_Hibernate - Fatal编程技术网

Java 如何使JSON在lopp中具有循环

Java 如何使JSON在lopp中具有循环,java,json,spring,hibernate,Java,Json,Spring,Hibernate,我有下表客户问题表 +----+------------+---------+-----+------+------+ | id | is_deleted | version | cid | pqid | qtid | +----+------------+---------+-----+------+------+ | 1 | | 0 | 1 | 1 | 1 | | 2 | | 0 | 1 | 2

我有下表客户问题表

+----+------------+---------+-----+------+------+
| id | is_deleted | version | cid | pqid | qtid |
+----+------------+---------+-----+------+------+
|  1 |            |       0 |   1 |    1 |    1 |
|  2 |            |       0 |   1 |    2 |    4 |
|  3 |            |       0 |   1 |    2 |    4 |
+----+------------+---------+-----+------+------+
+----+------------+---------+-----+------+
| id | is_deleted | version | pid | qid  |
+----+------------+---------+-----+------+
|  1 |            |       0 |   1 |    1 |
|  2 |            |       0 |   1 |    2 |
|  3 |            |       0 |   1 |    3 |
|  4 |            |       0 |   1 |    4 |
|  5 |            |       0 |   1 |    5 |
|  6 |            |       0 |   1 |    6 |
|  7 |            |       0 |   2 |    7 |
|  8 |            |       0 |   2 |    1 |
|  9 |            |       0 |   2 |    2 |
| 10 |            |       0 |   2 |    8 |
| 11 |            |       0 |   3 |    9 |
| 12 |            |       0 |   3 |    1 |
| 13 |            |       0 |   3 |   10 |
| 14 |            |       0 |   3 |   11 |
| 15 |            |       0 |   4 |   12 |
+----+------------+---------+-----+------+
这是家长提问表

+----+------------+---------+-----+------+------+
| id | is_deleted | version | cid | pqid | qtid |
+----+------------+---------+-----+------+------+
|  1 |            |       0 |   1 |    1 |    1 |
|  2 |            |       0 |   1 |    2 |    4 |
|  3 |            |       0 |   1 |    2 |    4 |
+----+------------+---------+-----+------+------+
+----+------------+---------+-----+------+
| id | is_deleted | version | pid | qid  |
+----+------------+---------+-----+------+
|  1 |            |       0 |   1 |    1 |
|  2 |            |       0 |   1 |    2 |
|  3 |            |       0 |   1 |    3 |
|  4 |            |       0 |   1 |    4 |
|  5 |            |       0 |   1 |    5 |
|  6 |            |       0 |   1 |    6 |
|  7 |            |       0 |   2 |    7 |
|  8 |            |       0 |   2 |    1 |
|  9 |            |       0 |   2 |    2 |
| 10 |            |       0 |   2 |    8 |
| 11 |            |       0 |   3 |    9 |
| 12 |            |       0 |   3 |    1 |
| 13 |            |       0 |   3 |   10 |
| 14 |            |       0 |   3 |   11 |
| 15 |            |       0 |   4 |   12 |
+----+------------+---------+-----+------+
这就是问题的选择

+----+------------+-----------+---------+
| id | is_deleted | name      | version |
+----+------------+-----------+---------+
|  1 |            | Excellent |       0 |
|  2 |            | Good      |       0 |
|  3 |            | Fair      |       0 |
|  4 |            | Poor      |       0 |
+----+------------+-----------+---------+
我想检索JSON并通过ajax发送到前端 我试过这样做

public List<ClientQuestionOption> getSavedQuestionOptions(Long parentId,long clientId)
{
    Client client = (Client) entityManagerUtil.find(Client.class, clientId);
    List<ClientQuestionOption>  questionsList =     (List<ClientQuestionOption>)serviceClientDaoImpl.getSavedQuestionOptionsList(parentId,client);
    System.out.println("The size is nnnnnnnnnn "+questionsList.size());
    List optionsList =new ArrayList();

    for(int i=0;i<questionsList.size();i++)
    {
        //optionsList.add(questionsList.get(i).getCqid().getId());
        //optionsList.add(questionsList.get(i).getOid().getName());
        Map map=new HashMap();
        map.put("qid", questionsList.get(i).getCqid().getPqid().getQid().getId());
        map.put("name", questionsList.get(i).getOid().getName());
        optionsList.add(map);

    }
return optionsList;

}
但是我想要这样的JSON

[
{
name: "Excellent",
qid: 2
},
{
name: "Poor",
qid: 2
}
],
 {
      "options": [
        "Poot",
        "Excellent"
      ],
      "qid": 2
    },
谁能告诉我怎么做

编辑

下面是我制作JSON的方法

    JSONObject object=new JSONObject();
List optionslist=null;
optionslist=(List<ClientQuestionOption>)serviceClientServiceImpl.getSavedQuestionOptions(parentId , Long.valueOf(clientId) );
    object.accumulate("optionslist",optionslist );

    return object.toString();

首先,要意识到函数返回的ArrayList根本不是JSON。这似乎发生在其他地方。您需要将JsonObject替换为JsonArray以将[..]更改为“{..}”


其次,要按照qid进行分组,您可以编写一个以列表作为输入和输出的函数。

您应该检查google GSON项目,下面是您的代码:

public class ClientQuestionOption {
    String name;
    int qid;

    public ClientQuestionOption() {
    }

    public ClientQuestionOption(String name, int qid) {
        this.name = name;
        this.qid = qid;
    }
}
然后这样使用它:

public static void main(String[] args) {
    List<ClientQuestionOption> questionOptions = Arrays.asList(
            new ClientQuestionOption("Excellent", 1),
            new ClientQuestionOption("Excellent", 2),
            new ClientQuestionOption("Poor", 3)
    );

    Gson gson = new GsonBuilder().setPrettyPrinting().create();

    System.out.println(gson.toJson(questionOptions));
}

从不使用原始类型开始,即不使用List和Map,而是List,您会发现您的代码不再编译,因为您没有返回正确的列表。@jbnize您能告诉我怎么做吗?我刚刚做了。不要将选项列表声明为列表。将其声明为列表。不要将map声明为map。声明为Map。@JBNizet现在我明白了。谢谢你的回答,现在我已经添加了JSON代码