2017-12-19 4 views
3

스프링 웹 서비스에서 일부 JSON을 수신하고 구문 분석해야합니다. JSON은 HTTP POST 요청으로 전송되며이 요청의 형식, 헤더 등을 제어 할 수 없습니다. 다음은 요청의 예입니다.값에 따옴표가 포함되어있을 때 스프링 컨트롤러에서 JSON을 올바르게 구문 분석합니다.

{ 
"u": 1, 
"t": "token", 
"rental": "rental_name", 
"address": "rental_address", 
"arrive": "Monday, Jan. 1 2018", 
"depart": "Wednesday, Jan. 3 2018", 
"adults": 1, 
"children": 0, 
"guest": "guest_name", 
"keys": "key location with "quotes" goes here", 
"inquiry": "inquiry_id" 
} 

"keys"의 값에는 큰 따옴표가 있습니다. 여기

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported 

는 POST 요청을 수신 나의 봄 컨트롤러의 방법입니다 : 내 봄 컨트롤러에 요청을 섭취하면 그 값에 따옴표를 혼동하고 있기 때문에

, 나는 당연하게도, 다음과 같은 예외를 얻을 :

@RequestMapping(value ="/booking_new", method = RequestMethod.POST, consumes = MediaType.ALL_VALUE) 
public ResponseEntity newBooking(@RequestBody Booking payload){ 
    //Extract values from the generated Booking object etc 
} 

나는 문자열로 @RequestBody를 받고 모든 따옴표를 이스케이프 때문에 단지 JSON을 무효화, 따옴표를 벗어날 수 없다.

요청이 들어올 때 어떤 값이라도 따옴표를 제거하거나 제거 할 수있는 방법이 있습니까?

+0

json에는 아무런 문제가 없습니다. 이 json과 일치하는 클래스를 만들고 Accept는 Post Request의 인수로 사용하십시오. 또한 내용 유형 헤더 – pvpkiran

+0

을 확인하십시오. 예, 이전 주석에서 오류가 내용 유형과 관련되어 있습니다. 아마도 MediaType.APPLICATION_JSON을 사용하고 싶습니까? – PillHead

+2

잘못된 JSON입니다. ''따옴표가있는 키 위치는 "여기에있다"는''따옴표가있는 "키 위치가 \"여기에 있어야한다 "'고해야 JSON이 올바른 것입니다. – Vadim

답변

0

JSON 값을 구성하는 변수를 제어 할 수는 없지만 전반적인 POST 요청의 형식을 제어 할 수 있다는 것을 알았습니다.

그래서 큰 따옴표 문제를 해결하기가 더 쉽기 때문에 JSON 대신 XML로 서식을 지정했습니다.

관련 문제