将 json 字符串转换为 java 对象
Convert json String to java object
我有以下 jsonString,我需要将其转换为 java 对象,我已使用以下代码对其进行转换,但出现此异常
com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class com.innvo.web.rest.dto.Responsedetail$Questiongroup]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)
Json 字符串
String jsonStrings ="{"questiongroups":[{"questiongroup":"1000","questions":[{"question":1001,"response":4},{"question":1002,"subquestion":1001,"response":"A2"}]}]}";
ResponseDetails.java
public class Responsedetail {
@JsonProperty("questiongroups")
public List<Questiongroup> questiongroups;
public List<Questiongroup> getQuestiongroups() {
return questiongroups;
}
public void setQuestiongroups(List<Questiongroup> questiongroups) {
this.questiongroups = questiongroups;
}
public Responsedetail() {
super();
}
class Questiongroup{
@JsonProperty("questiongroup")
String questiongroup;
@JsonProperty("questions")
List<Question> questions;
public Questiongroup() {
super();
}
public String getQuestiongroup() {
return questiongroup;
}
public void setQuestiongroup(String questiongroup) {
this.questiongroup = questiongroup;
}
public List<Question> getQuestions() {
return questions;
}
public void setQuestions(List<Question> questions) {
this.questions = questions;
}
class Question{
@JsonProperty("question")
String question;
@JsonProperty("response")
String response;
public Question() {
super();
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
}
}
}
转换代码
String jsonStrings ="{"questiongroups":[{"questiongroup":"1000","questions":[{"question":1001,"response":4},{"question":1002,"subquestion":1001,"response":"A2"}]}]}";
ObjectMapper mapper = new ObjectMapper();
Responsedetail responsedetail = mapper.readValue(response.getDetails(), Responsedetail.class);
System.out.println(responsedetail);
System.out.println(responsedetail.questiongroups);
你的Questiongroup
class嵌套在Responsedetail
class里面,Question
嵌套在Questiongroup
.[=18=里面]
因为你没有制作它们 static
,它们是 inner classes.
将 static
添加到嵌套的 classes 中,使它们 static 嵌套 classes.
或者,在它们自己的 .java
源文件中将它们全部设为顶级 class。
我有以下 jsonString,我需要将其转换为 java 对象,我已使用以下代码对其进行转换,但出现此异常
com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class com.innvo.web.rest.dto.Responsedetail$Questiongroup]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)
Json 字符串
String jsonStrings ="{"questiongroups":[{"questiongroup":"1000","questions":[{"question":1001,"response":4},{"question":1002,"subquestion":1001,"response":"A2"}]}]}";
ResponseDetails.java
public class Responsedetail {
@JsonProperty("questiongroups")
public List<Questiongroup> questiongroups;
public List<Questiongroup> getQuestiongroups() {
return questiongroups;
}
public void setQuestiongroups(List<Questiongroup> questiongroups) {
this.questiongroups = questiongroups;
}
public Responsedetail() {
super();
}
class Questiongroup{
@JsonProperty("questiongroup")
String questiongroup;
@JsonProperty("questions")
List<Question> questions;
public Questiongroup() {
super();
}
public String getQuestiongroup() {
return questiongroup;
}
public void setQuestiongroup(String questiongroup) {
this.questiongroup = questiongroup;
}
public List<Question> getQuestions() {
return questions;
}
public void setQuestions(List<Question> questions) {
this.questions = questions;
}
class Question{
@JsonProperty("question")
String question;
@JsonProperty("response")
String response;
public Question() {
super();
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
}
}
}
转换代码
String jsonStrings ="{"questiongroups":[{"questiongroup":"1000","questions":[{"question":1001,"response":4},{"question":1002,"subquestion":1001,"response":"A2"}]}]}";
ObjectMapper mapper = new ObjectMapper();
Responsedetail responsedetail = mapper.readValue(response.getDetails(), Responsedetail.class);
System.out.println(responsedetail);
System.out.println(responsedetail.questiongroups);
你的Questiongroup
class嵌套在Responsedetail
class里面,Question
嵌套在Questiongroup
.[=18=里面]
因为你没有制作它们 static
,它们是 inner classes.
将 static
添加到嵌套的 classes 中,使它们 static 嵌套 classes.
或者,在它们自己的 .java
源文件中将它们全部设为顶级 class。