Я проверил некоторую информацию в Интернете и чувствовал, что это было довольно сложно. Здесь я использовал два очень простых метода, чтобы решить проблему искаженного кода Китая.
Весенняя версия: 3.2.2. РЕЛИЗА
Джексон JSON версия: 2.1.3
Решение: Метод контроллера напрямую записывает данные типа строки JSON в сетевой поток посредством ответа.
Используйте Jackson's ObjectMapper, чтобы преобразовать Java -объекты в данные JSON Type String.
Чтобы избежать китайского искаженного кода, вам необходимо установить форматы кодирования символов, такие как: UTF-8, GBK и т. Д.
Код заключается в следующем:
Импорт org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; import org.springframework.ui.model; импорт org.springframe.web.bindtation.requestmapping; org.springframework.web.bind.annotation.requestmethod; импорт org.springframework.web.bind.annotation.requestparam; импорт com.fasterxml.jackson.databind.objectmapper; // jsckson json processerimport java.util. *; Import javax.servlet.servletoutputstream; import javax.servlet.http. *; Импорт java.io.printwriter; импорт java.nio.charset.charset;/** * Создан с IntelliJ Idea 12.0 * Дата: 2013-03-15 * класс homecontroller {@requestmapping (value = "/home/writejson", method = 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", "Джексон"); String json = ""; try {json = mapper.writevalueasString (map); System.out.println (json); // схема 2 ServletOutputStream OS = response.getOutputStream (); // Получить выходной поток os.write (json.getbytes (charset.forname ("gbk"))); // записать данные json в потоку os.flush (); // схема 1 response.setcharacterencoding ("UTF-8"); // Установите ответ в формате кодирования.setContentType ("text/html"); // Установить формат данных printwriter = response.getWriter (); // получить объект записи Out.print (json); // записать данные json в потоку out.flush (); } catch (Exception e) {e.printstackTrace (); } // вернуть "домой"; }}Существует еще один метод: установите параметр @Requestmapping, код заключается в следующем:
Идея: Используйте аннотацию @Responsebody, чтобы прямо вернуть строку JSON. Чтобы предотвратить искаженную код Китая, установите параметр производителей @Requestmapping «text/html; charset = utf-8».
@Requestmapping (value = "/home/writejson", method = requestmethod.get, products = "text/html; charset = utf-8")@responsebodypublic object 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", "Джексон"); String json = ""; try {json = mapper.writevalueasString (map); System.out.println (json); } catch (Exception e) {e.printstackTrace (); } return json;}Результаты работы показаны на рисунке ниже:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.