【问题标题】:Create nested json with java from ResultSet使用 ResultSet 中的 java 创建嵌套 json
【发布时间】:2016-12-30 19:01:30
【问题描述】:

我正在努力创建一个 Web 服务来返回一个嵌套的 json,如下所示:

{
    "questionaire": {
        "idSection": 1,
        "sectionName": "Section Test 1",
        "questions": {
            "text": {
                "idQuestion": 1,
                "statement": "Question statement",
                "kindQuestion": "boolean",
                "availableAnswers": {
                    "idAnswer": 1,
                    "stringAnswer": "answer 1"
                }
            }
        }
    },
    "idSection": 1,
    "sectionName": "Section Test 1",
    "questions": {
        "text": {
            "idQuestion": 1,
            "statement": "Question statement",
            "kindQuestion": "boolean",
            "availableAnswers": {
                "idAnswer": 1,
                "stringAnswer": "answer 1"
            }
        }
    }
}

我不能 100% 确定我写的结构是否正确,我的想法是:我有部分,其中包含问题,与问题相关的每个答案都来自一种(布尔值、数字、选择)并且有她自己的答案。所有这些数据我都在数据库中,现在我必须获取部分和所有相关信息,例如:部分 > 问题 > 输入答案 > 可用答案。

这是我正在尝试做的,但它不能正常工作我不知道如何将与该部分相关的问题和问题中的答案嵌套并继续。

// ques is a JSONArray    
sections = resultset from database;
              // While loop for every section
              while(sections.next()){
                 // Here I start to create the json
                 jsonD.put("sectionID", sections.getInt("id"));
                 jsonD.put("sectionName", sections.getString("sectionName"));
                 questions = resultset from database, contains the questions for every section
                 // Recupera preguntes vinculades a la seccio
                 while(questions.next()){
                     ques.put("idQuestion", id);
                     ques.put("statement", statement);
                     ...
                 }

              }

在这一点上,我的代码没有适当地创建嵌套的 json

【问题讨论】:

  • 在我看来,最好创建一个 java 对象结构并使用 db 结果集准备该对象结构,然后使用 jackson 或 GS​​ON 将该对象转换为 json。

标签: java json nested


【解决方案1】:

您必须创建一个分层数据结构,然后将其转换为 Json。 Represent tree hierarchy in java

尝试使用 jackson API 生成 JSON https://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/

【讨论】:

    【解决方案2】:

    看看javax.json中的JsonObjectBuilder、JsonArrayBuilder等。他们会为您解决问题。

    【讨论】:

      【解决方案3】:

      Google gson 在构建多维 json 结构方面要先进得多。 首先创建一个类似于以下代码的数据层次结构。然后根据您拥有的数据,为类中的每个字段设置值。 公共类 CreateGoalRequest {

      @SerializedName("name")
      private String goalName;
      
      @SerializedName("recommendable_modules_alt")
      private RecommendationModuleAlt recommendationList;
      
      @SerializedName("target_modules")
      private List<TargetModule> targetModules;
      
      @SerializedName("max_recommendation_size")
      private int recommendationSize;
      
      @SerializedName("start_date")
      private String startDate;
      
      @SerializedName("metrics_enabled")
      private Boolean metricsEnabled;
      
      public List<TargetModule> getTargetModules() {
          return targetModules;
      }
      

      .......

      并使用

      构建您的层次结构
      import com.google.gson.Gson;
                  CreateGoalRequest createGoalRequest = new CreateGoalRequest();
                  createGoalRequest.setGoalName(goalName);
                  createGoalRequest.setMetricsEnabled(Boolean.TRUE);
                  createGoalRequest.setTargetModules(targetModules);
                  createGoalRequest.setRecommendationList(recommendableList);
                  createGoalRequest.setRecommendationSize(recommendableItemCount);
                  createGoalRequest.setStartDate(startDate);
      
                  try {
                      String entity = new String(gson.toJson(createGoalRequest));
      

      【讨论】:

        猜你喜欢
        • 2023-02-23
        • 1970-01-01
        • 1970-01-01
        • 2012-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        相关资源
        最近更新 更多