나는 온라인으로 정보를 확인했고 그것이 매우 복잡하다고 느꼈습니다. 여기서는 중국의 garbled 코드의 문제를 해결하기 위해 매우 간단한 두 가지 방법을 사용했습니다.
스프링 버전 : 3.2.2. release
잭슨 JSON 버전 : 2.1.3
솔루션 : 컨트롤러의 메소드는 문자열 유형 JSON 데이터를 응답을 통해 네트워크 스트림에 직접 씁니다.
Jackson의 ObjectMapper를 사용하여 Java 객체를 유형의 JSON 데이터로 변환하십시오.
중국어가 달린 코드를 피하려면 UTF-8, GBK 등과 같은 문자 인코딩 형식을 설정해야합니다.
코드는 다음과 같습니다.
import org.springframework.bean.beans.annotation.autowired; import org.springframework.stereotype.controller; import org.springframework.ui.model; import org.springframework.web.bind.annotation.requestmapping; 가져 오기; org.springframework.web.bind.annotation.requestmethod; import org.springframework.web.bind.annotation.requestparam; import com.fasterxml.jackson.databind.objectMapper; // JSCKSON JSON ProcessErimport Java.util. *; import javax.servlet.servletoutputStream; import javax.servlet.http. *; import java.io.printwriter; import java.nio.charset.charset.charset;/** * date 12.0 날짜 : 2013-03-15 */time : 16:15 * time : 16:15 */** ** ** charset.charset;/** *. 클래스 homecontroller {@requestmapping (value = "/home/writejson", method = requestMethod.get) public void writeJson (httpservletResponse 응답) {ObjectMapper Mapper = new ObjectMapper (); Hashmap <String, String> map = new Hashmap <String, String> (); map.put ( "1", "Zhang San"); map.put ( "2", "li si"); map.put ( "3", "Wang Wu"); Map.put ( "4", "Jackson"); 문자열 json = ""; try {json = mapper.writevalueasstring (map); System.out.println (JSON); // scheme 2 servletoutputStream os = response.getOutputStream (); // 출력 스트림 os.write를 가져옵니다 (json.getBytes (charset.forname ( "gbk"))); // JSON 데이터를 스트림 os.flush ()에 씁니다. // 반응식 1 응답 .SetchAracterEncoding ( "UTF-8"); // 인코딩 형식을 설정합니다. // 데이터 형식 설정 printWriter out = response.getWriter (); // 쓰기 개체를 가져옵니다 .print (json); // JSON 데이터를 스트림에 쓰기 out.flush (); } catch (예외 e) {e.printstacktrace (); } // "집"리턴; }}다른 방법이 있습니다 : @requestmapping의 생성 매개 변수 설정 코드는 다음과 같습니다.
아이디어 : @ResponseBody 주석을 사용하여 JSON 문자열을 직접 반환하십시오. 중국어가 달린 코드를 방지하기 위해 @requestmapping의 생산자 매개 변수를 "Text/Html; charset = utf-8"로 설정하십시오.
@requestmapping (value = "/home/writejson", method = requestmethod.get, produces = "text/html; charset = utf-8")@responsebodpublic object writejson (httpservletresponse 응답) {ObjectMapper mapper = new ObjectMapper (); Hashmap <String, String> map = new Hashmap <String, String> (); map.put ( "1", "Zhang San"); map.put ( "2", "li si"); map.put ( "3", "Wang Wu"); Map.put ( "4", "Jackson"); 문자열 json = ""; try {json = mapper.writevalueasstring (map); System.out.println (JSON); } catch (예외 e) {e.printstacktrace (); } return json;}작업 결과는 다음 그림에 나와 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.