2014-10-17 4 views
0

웹 서비스 개발을 위해 Spring 4.1 프레임 워크를 사용하고 있습니다. 응답으로 Java 객체를 반환하면 자동으로 JSON으로 변환되어 클라이언트에 전달되므로 JSON 파서가 클래스 경로에 있고 제대로 구성되었다고 가정합니다. 그러나 자바 객체로 JSON에서 요청 본문을 변환하는 데 실패하고 클라이언트는 400 여기Spring MVC로 JSON 요청 바디 구문 분석하기

의 HTTP 응답을 받고있는 웹 서비스의 모습 방법 :

여기

요청이 같은 모습입니다 : 내가 문자열로 요청 본문을 수집하고 작동, 그래서 그것은 유효한 JSON을 얻을 수 있지만 몇 가지 이유가 자동으로 구문 분석되지 않은 수동으로 다음의 구문을 분석하는 경우

Method: Post 
Content-Type: application/json; charset=utf-8 
Body: {"code":0,"area":12} 

. 나는 그것을 고치는 방법에 대한 단서가 없다. 도와주세요. 미리 감사드립니다.

+0

확실하지 않지만 json converter가 패키지 전용 속성을 선택하지 않은 것 같습니다. Details 클래스에서 getter 및 setter를 추가하거나 public으로 정의하십시오. jackson을 사용하고 있다면'@ JsonProperty'로 주석을 달 수도 있습니다 – Vladimir

+0

@JsonProperty를 추가하면 응답 코드 415가 나타납니다. – Aarkan

답변

1

Details 클래스에 패키지 전용 속성이 있으므로 json-converter에서 패키지 개인 속성을 인식하지 못할 수 있습니다.

당신은 몇 가지 옵션이 있습니다 :

  • (권장하지 않음)은 잭슨을 사용하는 경우
  • 그들을 떠나, 당신은 @JsonProperty로 주석을 달 수 있습니다, getter 및 setter
  • 를 제공하는 공공 패키지 -로 정의 비공개
+0

감사합니다. 그들을 공개하려고 노력했습니다 - 차이는 없습니다. @JsonProperty를 추가하면 응답 코드가 415가됩니다. – Aarkan

+0

응답을 직렬화하는 동안 415가 팝업 될 수 있습니다. 요청이 여전히 메소드 내부에 들리지는 않습니까? 메소드 시작 부분에 중단 점 또는 일부 콘솔 출력을 추가하십시오. – Vladimir

+0

예, 중단 점을 추가했지만 적중하지 않습니다. – Aarkan

1

마지막으로 나는 이것에 대한 이유가 있습니다. 정적이 아닌 내부 클래스를 사용하고있었습니다. 정적 인 문제가 해결되었습니다.

관련 문제