Ajax와 JSON을 사용하여 컨트롤러에 데이터를 전달하려고합니다.Spring MVC - JSON 배열 역 직렬화
HTML 테이블이 있는데 컨트롤러에 여러 테이블 좌표를 보내야합니다. 나는이처럼 직렬화,
{
DAY: someIndex,
HOUR: someOtherIndex
}
이 배열 coordinates
호출 할 수 있습니다 : : 그래서 이러한 종류의 익명 객체를 포함한 자바 스크립트 배열을 만든 그럼 아약스 호출
JSON.stringify(coordinates)
을 (type: POST
를) 나는 data: JSON.stringify(coordinates)
을 사용했다. 내 문서에서
준비 내가 사용 :
$.ajaxSetup({
headers : {
Accept : "application/json; charset=utf-8"
}
});
그리고 내 컨트롤러는 다음과 같습니다
@RequestMapping(value = "/{id}", method = RequestMethod.POST)
public @ResponseBody
String update(@PathVariable int id, @RequestBody String coordinates, HttpServletResponse response) {
// Do something here to convert it in my complex structure
}
그러나 나는 유형이 매개 변수
coordinates
이 될해야하는지 모른다.
나는 GSON
을 사용하고 있습니다. 그리고 저는 그것을 쉽게 비 직렬화 할 수 없었습니다. this 솔루션을 사용해 보았지만 작동하지 않습니다. (어떤 이유로 캐스트 유형을 묻지 않습니다.)
이 코드를 올바르게 deserialize 할 수 없을 것이라고 생각했기 때문에 좌표를 다른 형식으로 직렬화하려고했습니다. 토큰에 의해 분할 (;) here
그래서 내 배열 자바 스크립트 객체는 foreach
에서 다음과 같이 생성됩니다
coordinates.push(someIndex.toString() + ";" + someOtherIndex.toString());
그리고 나는 캐릭터 라인 화 부분을 유지
을 이제 갔지. n POST
내 컨트롤러에 데이터를 입력하면 System.out.println(coordinates)
값이 출력되고 이상하게 보입니다. 자바 스크립트 콘솔에서이 개체에 대한
%5B%220%3B8%22%5D=
:
["0;8"]
.
그래서 내 질문 :
- 이 좋은 방법인가?
- JSON 배열을 일부 Java 유형으로 deserialize 할 수 있습니까? 예 :
List<Coordinate>
? (나는이 컨트롤러를 컨트롤러에서String
대신 사용하려고 시도했지만 오류가 발생했습니다.) - String 접근 방식을 사용하고 있다면, 내가 원하는 것을 그 횡설수설을 번역 할 수있는 방법이 있습니까?
실제로 contentType이 그랬습니다! 감사. 누군가 내 다른 질문에 답할 수 있도록 질문을 열어 두겠습니다. +1. – Pacane
@ Pacane 잘, 귀하의 질문 번호 1 권유 의견, 2에 대한 위에서 언급 한 변환기가 필요없고 3 단지 콘텐츠 유형을 설정하여 해결있어;) – soulcheck
오른쪽. 감사!! – Pacane