Ich habe einige Informationen online überprüft und war für ziemlich kompliziert. Hier habe ich zwei sehr einfache Methoden verwendet, um das Problem des chinesischen verstümmelten Code zu lösen.
Frühlingsversion: 3.2.2.Release
Jackson JSON Version: 2.1.3
Lösung: Die Methode des Controllers schreibt direkt String -Typ -JSON -Daten über die Antwort in den Netzwerkstrom.
Verwenden Sie Jacksons ObjectMapper, um Java -Objekte in JSON -Daten vom Typ String umzuwandeln.
Um den chinesischen verstümmelten Code zu vermeiden, müssen Sie Charakter-Codierungsformate festlegen, wie z. B. UTF-8, GBK usw.
Der Code ist wie folgt:
import org.springframework.beans.factory.annotation org.springframework.web.bind.annotation.requestMethod; import org.springframework.web.bind.annotation.requestparam; import com.fasterxml.jackson.databind.objectmapper; // jsckson json processerimport java.util. Klasse homecontroller {@RequestMapPing (value = "/home/writejson", method = requestMethod.get) public void writeJson (httpServletResponse -Antwort) {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 = ""; try {json = mapper.writeValueasString (MAP); System.out.println (JSON); // Schema 2 ServletOutputStream os = response.getOutputStream (); // den Ausgabestream OS.Write (json.getBytes (charset.forname ("gbk")) abrufen; // JSON -Daten in den Stream os.flush () schreiben; // Schema 1 Antwort.Setcharactercoding ("UTF-8"); // Setzen Sie das Codierungsformat -Antwort.SetContentType ("Text/HTML"); // Setzen Sie den Datenformat -Pressewriter out = response.getWriter (); // das Schreibobjekt rausholen.print (JSON); // JSON -Daten in den Stream out.flush () schreiben; } catch (Ausnahme e) {e.printstacktrace (); } // Rückkehr "nach Hause"; }}Es gibt eine andere Methode: Setzen Sie den Erzeugnisparameter von @RequestMapping, der Code lautet wie folgt:
Idee: Verwenden Sie die @ResponseBody -Annotation, um die JSON -Zeichenfolge direkt zurückzugeben. Um den chinesischen verstümmelten Code zu verhindern, setzen Sie den Produzentenparameter von @RequestMapping auf "text/html; charset = utf-8".
@RequestMapping (value = "/home/writeJson", method = requestMethod.get, procies = "text/html; charset = utf-8")@responseBodypublic-Objekt writeJson (httpServletResponse Antwort) {ObjectMapper mapper = new ObjectMaper (); 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 = ""; try {json = mapper.writeValueasString (MAP); System.out.println (JSON); } catch (Ausnahme e) {e.printstacktrace (); } return json;}Die Betriebsergebnisse sind in der folgenden Abbildung dargestellt:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.