2016-10-01 240 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

謝謝,你幫助我,節省了我的時間 –