Revisé algo de información en línea y sentí que era bastante complicado. Aquí, utilicé dos métodos muy simples para resolver el problema del código confuso chino.
Versión de primavera: 3.2.2. Release
Versión de Jackson JSON: 2.1.3
Solución: el método del controlador escribe directamente los datos de String tipo JSON en la secuencia de red a través de la respuesta.
Use el ObjectMapper de Jackson para convertir los objetos Java en datos JSON de la cadena de tipo.
Para evitar el código de confusión chino, debe establecer formatos de codificación de caracteres, como: UTF-8, GBK, etc.
El código es el siguiente:
importar org.springframework.beans.factory.annotation.aUtowired; import org.springframework.stereotype.controller; import org.springframework.ui.model; import org.springframework.web.bind.annotation.requestmapping; import; org.springframework.web.bind.annotation.requestmethod; import org.springframework.web.bind.annotation.requestparam; import com.fasterxml.jackson.databind.objectMapper; // jsckson json procesadorMport java.util. *; Import javax.servlet.servletOutputStream; import javax.servlet.http. *; Import java.io.printwriter; import java.nio.charset.charset;/** * creado con ideal intelliJ 12.0 * Fecha: 2013-03-15 * TIEMPA * 16:17 * HOMECONTROLLER {@RequestMapping (valor = "/home/writejson", método = requestMethod.get) public void WriteJson (httpServletResponse Response) {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"); Cadena json = ""; intente {json = mApper.WriteValueAsString (MAP); System.out.println (JSON); // Esquema 2 ServLetOutputStream OS = Response.getOutputStream (); // Obtenga la transmisión de salida OS.Write (json.getBytes (charset.forname ("gbk"))); // Escribir datos JSON en la transmisión OS.Flush (); // Esquema 1 Respuesta. SetcharacterEncoding ("UTF-8"); // Establecer la respuesta del formato de codificación.setContentType ("Text/Html"); // Establecer el formato de datos PrintWriter out = Response.getWriter (); // Obtener el objeto de escritura out.print (json); // Escribir datos JSON en el stream out.flush (); } catch (Exception e) {E.PrintStackTrace (); } // Regreso "Inicio"; }}Hay otro método: establecer el parámetro Products de @RequestMapping, el código es el siguiente:
Idea: use la anotación @ResponseBody para devolver directamente la cadena JSON. Para evitar el código de confusión chino, establezca el parámetro de los productores de @RequestMapping en "Text/HTML; Charset = UTF-8".
@RequestMapping (valor = "/home/writejson", método = requestmethod.get, produce = "text/html; charset = utf-8")@ResponseBodyPublic Object WriteJson (HttpServletResponse Respuesta) {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"); Cadena json = ""; intente {json = mApper.WriteValueAsString (MAP); System.out.println (JSON); } catch (Exception e) {E.PrintStackTrace (); } return json;}Los resultados de la operación se muestran en la figura a continuación:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.