2016-10-01 188 views
-3

我有以下jsonString,我需要将其转换为Java对象,我用下面的代码转换,但我得到这个异常转换JSON字符串到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); 

回答

2

Questiongroup类嵌套在Responsedetail类内部,并且Question嵌套在Questiongroup

既然你没有让他们static,他们是inner classes

static添加到嵌套类,使它们成为静态嵌套类

或者,使它们在其自己的.java源文件中都是顶级类。

+0

谢谢,你帮助我,节省了我的时间 –