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

Спасибо, ты помог мне и сэкономил мое время –

Смежные вопросы