我正在努力创建一个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%确定我写的结构是否正确,这个想法是:我得到的部分包含问题,每个与问题相关的答案都来自一种(布尔,数字,选择)并且她自己的答案。所有这些数据我都在数据库上,现在我必须得到部分和所有相关信息,如:section>问题>类型答案>可用的答案。
这就是我尝试做的事情,但它并没有正常工作我不知道如何在问题中嵌入相关部分和答案的问题并继续。< / p>
// 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
答案 0 :(得分:0)
您必须创建分层数据结构,然后将其转换为Json。 Represent tree hierarchy in java
尝试使用jackson API生成JSON https://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/
答案 1 :(得分:0)
在javax.json中查看JsonObjectBuilder,JsonArrayBuilder等。他们会为你做的伎俩。
答案 2 :(得分:0)
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));