J'ai vérifié quelques informations en ligne et j'ai estimé que c'était assez compliqué. Ici, j'ai utilisé deux méthodes très simples pour résoudre le problème du code brouillé chinois.
Version du printemps: 3.2.2.release
Jackson Json Version: 2.1.3
Solution: la méthode du contrôleur écrit directement les données JSON de type de chaîne au flux de réseau via la réponse.
Utilisez ObjectMapper de Jackson pour convertir les objets Java en données JSON de la chaîne de type.
Afin d'éviter le code brouillé chinois, vous devez définir des formats d'encodage de caractères, tels que: UTF-8, GBK, etc.
Le code est le suivant:
import org.springframework.beans.factory.annotation.autowired; import org.springframework.sterreotype.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 Procetterimport java.util. *; Importer javax.servlet.servletOutStream; Importer javax.servlet.http. *; Importer java.io.printwriter; Importer java.nio.charset.charse; / ** * Créé avec Intellij IDEDPULPUBLIC: 2013-03-15 class homeController {@RequestMapping (value = "/ home / writejson", méthode = requestMethod.get) public void writejson (httpsservletResponse réponse) {objectMapper masper = 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 = ""; essayez {json = mapper.writeValueAsString (map); System.out.println (JSON); // schéma 2 servletOutputStream os = réponse.getOutputStream (); // obtient le flux de sortie os.write (json.getbytes (charset.forname ("gbk"))); // Écrivez des données JSON dans le flux os.flush (); // schéma 1 réponse.SetcharAtterencoding ("UTF-8"); // Définit le format de codage Response.SetContentType ("Text / Html"); // Définissez le format de données printwriter out = réponse.getWriter (); // Obtenez l'objet d'écriture Out.print (JSON); // Écrivez des données JSON dans le flux Out.flush (); } catch (exception e) {e.printStackTrace (); } // retourner "à la maison"; }}Il existe une autre méthode: Définissez le paramètre produit de @RequestMapping, le code est le suivant:
Idée: utilisez l'annotation @ResponseBody pour renvoyer directement la chaîne JSON. Afin d'empêcher le code brouillé chinois, définissez le paramètre des producteurs de @RequestMapping sur "Text / HTML; charset = UTF-8".
@RequestMapping (value = "/ home / writejson", méthode = requestMethod.get, products = "text / html; charset = utf-8") @ réponsebodypublic objet writejson (httpservletResponse réponse) {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 = ""; essayez {json = mapper.writeValueAsString (map); System.out.println (JSON); } catch (exception e) {e.printStackTrace (); } return json;}Les résultats de l'opération sont présentés dans la figure ci-dessous:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.