将resultset转换为java中的嵌套json

将resultset转换为java中的嵌套json,java,json,resultset,Java,Json,Resultset,我正在尝试将结果集转换为Java中的JSON字符串。数据以表格形式显示 +---+----------+-------------+---------------+ | id| job_type | question | response_type | +---+----------+-------------+---------------+ | 1 | quote | question1 | text1 | | 2 | quote | quest

我正在尝试将结果集转换为Java中的JSON字符串。数据以表格形式显示

+---+----------+-------------+---------------+
| id| job_type | question    | response_type | 
+---+----------+-------------+---------------+
| 1 | quote    | question1   | text1         |   
| 2 | quote    | question2   | number2       |   
+---+----------+-------------+---------------+
| 3 | standard | question1   | text2         |   
| 4 | standard | question2   | number2       |   
+---+----------+-------------+---------------+
{
   "JobType": “Quote",
   "Questions": [{
      "question": “question1",
      "response_type": “ text1",
   }, {
      "question": “question2",
      "response_type": “ number2",
   }],
   “JobType”:”Standard”,
   "Questions": [{
       "question": “question1",
       "response_type": “ number2",
   }, {
       "question": “question2",
       "response_type": “ number2",
   }]
}
我想得到JSON的形式

+---+----------+-------------+---------------+
| id| job_type | question    | response_type | 
+---+----------+-------------+---------------+
| 1 | quote    | question1   | text1         |   
| 2 | quote    | question2   | number2       |   
+---+----------+-------------+---------------+
| 3 | standard | question1   | text2         |   
| 4 | standard | question2   | number2       |   
+---+----------+-------------+---------------+
{
   "JobType": “Quote",
   "Questions": [{
      "question": “question1",
      "response_type": “ text1",
   }, {
      "question": “question2",
      "response_type": “ number2",
   }],
   “JobType”:”Standard”,
   "Questions": [{
       "question": “question1",
       "response_type": “ number2",
   }, {
       "question": “question2",
       "response_type": “ number2",
   }]
}
这就是我到目前为止所取得的成绩

JSONObject jobType = new JSONObject();
List<JSONObject> jobTypeQuestionListIndividual = new ArrayList<JSONObject>();

int i = 0;
if (!jobTemplate.next()) {    
        System.out.println("No records found");
} else {
    do {
        if (i % 2 == 0) {
            jobType.put("JobType",jobTemplate.getString("JobType") );

            JSONObject firstQuestion = new JSONObject();
            firstQuestion.put("question",  jobTemplate.getString("question"));
            firstQuestion.put("response_type",  jobTemplate.getString("response_type"));

            jobTypeQuestionListIndividual.add(firstQuestion);

            jobType.put("Questions",jobTypeQuestionListIndividual);

        } else {
            JSONObject question = new JSONObject();

            question.put("question",  jobTemplate.getString("question"));
            question.put("response_type",  jobTemplate.getString("response_type"));

            jobTypeQuestionListIndividual.add(question);
        }

        i = i+1;

    } while (jobTemplate.next());
}

System.out.println( jobType);

提前感谢您的帮助。

我通过首先创建hashmaps和HashSet,找到了构建嵌套json的方法。这是受到以下答案的启发: 及

我的代码没有以我最初需要的格式提供JSON,但它适合我。我明白了

{“Quote”:[{“问题”:“问题1”,“回答类型”:“文本1”,},{“问题”:“问题2”,“回答类型”:“数字2”,}],“标准”:[{“问题”:“问题1”,“}]}

我更新的代码是

String out = "";
try {
    String jobType = "";
    ResultSet jobTemplate = jobs.getAllJobDetailsTemplate(Integer.parseInt(customerId));
    Map<String, Set<HashMap<String,String>>> jobTypes = new HashMap<String, Set<HashMap<String,String>>>();

    while (jobTemplate.next()) {
        jobType = jobTemplate.getString("JobType");
        Set<HashMap<String,String>> questions = jobTypes.containsKey(jobType) ? jobTypes.get(jobType) : new HashSet<HashMap<String,String>>();
           HashMap<String,String> individualQuestion = new HashMap<String,String>();
             individualQuestion.put("question",  jobTemplate.getString("question"));
             individualQuestion.put("response_type", jobTemplate.getString("response_type"));
           questions.add(individualQuestion);
        jobTypes.put(jobType, questions); 
    }

    out = new ObjectMapper().writeValueAsString(jobTypes);
}
String out=”“;
试一试{
字符串jobType=“”;
ResultSet-jobTemplate=jobs.getAllJobDetailsTemplate(Integer.parseInt(customerId));
Map jobTypes=newhashmap();
while(jobTemplate.next()){
jobType=jobTemplate.getString(“jobType”);
Set questions=jobTypes.containsKey(jobType)?jobTypes.get(jobType):new HashSet();
HashMap individualQuestion=新HashMap();
individualQuestion.put(“问题”,jobTemplate.getString(“问题”);
individualQuestion.put(“响应类型”,jobTemplate.getString(“响应类型”);
问题。添加(个人问题);
作业类型。放置(作业类型,问题);
}
out=newObjectMapper().writeValueAsString(作业类型);
}

我从未在Java中使用过JSON,但我建议您创建一个只有两个字符串的QuestiorResponse类(如果您想保留ID,可能是一个整数),以及一个包含QuestionResponse列表的类JobType(如果重要的话,使用一个保留顺序的列表)然后,一旦你在这些bean中转换了所有的结果集,你就可以使用它们来创建一个Json对象(甚至可以使用一些API/librares来为你做这个)。这样应该会更容易。