Eu verifiquei algumas informações on -line e achei que era bastante complicada. Aqui, usei dois métodos muito simples para resolver o problema do código ilegal chinês.
Versão da primavera: 3.2.2.Release
Jackson JSON Versão: 2.1.3
Solução: o método do controlador grava diretamente os dados do tipo String JSON no fluxo de rede através da resposta.
Use o objectMapper de Jackson para converter objetos Java em dados JSON da string do tipo.
Para evitar o código ilegal chinês, você precisa definir formatos de codificação de caracteres, como: UTF-8, GBK, etc.
O código é o seguinte:
importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.controller; importar org.springframework.ui.model; importação org.springframework.webind.annotation.requestmapping; org.springframework.web.bind.annotation.requestmethod; importar org.springframework.web.bind.annotation.requestparam; importar com.fasterxml.jackson.databind.objectmapper; // jsckson json processerimport java.util. *; Importar javax.servlet.servletoutputStream; importar javax.servlet.http. *; Importar java.io.printWriter; import java.nio.charset.charset; classe HomeController {@ReQuestMapping (value = "/home/writejson", método = requestmethod.get) public void writejson (httpServletResponse resposta) {objectmapper mapper = new ObjecjotMapper (); 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"); String json = ""; tente {json = mapper.WriteValuEasString (map); System.out.println (JSON); // esquema 2 servletoutputStream OS = Response.getOutputStream (); // Obtenha o fluxo de saída OS.WRITE (JSON.GETBYTES (CHARSET.FORNAME ("GBK"))); // Escreva dados JSON no fluxo os.flush (); // Esquema 1 Response.Setcharacterencoding ("UTF-8"); // defina o formato de codificação Response.setContentType ("Text/html"); // Defina o formato de dados printWriter out = Response.getWriter (); // obtenha o objeto de gravação.print (json); // Escreva dados JSON no fluxo out.flush (); } catch (Exceção e) {e.printStackTrace (); } // retorna "home"; }}Existe outro método: Defina o parâmetro de @RequestMapping, o código é o seguinte:
Ideia: use a anotação @ResponseBody para retornar diretamente a string json. Para evitar o código ilegal chinês, defina o parâmetro dos produtores do @ReQuestMapping como "Text/html; charset = utf-8".
@RequestMapping (value = "/home/writejson", método = requestMethod.get, produz = "text/html; charset = utf-8")@ResponseBodyPublic Object writejson (httpServletResponse resposta) {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"); String json = ""; tente {json = mapper.WriteValuEasString (map); System.out.println (JSON); } catch (Exceção e) {e.printStackTrace (); } retornar json;}Os resultados da operação são mostrados na figura abaixo:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.