Saya memeriksa beberapa informasi secara online dan merasa itu cukup rumit. Di sini, saya menggunakan dua metode yang sangat sederhana untuk menyelesaikan masalah kode kacau Cina.
Versi Musim Semi: 3.2.2.release
Versi Jackson JSON: 2.1.3
Solusi: Metode pengontrol secara langsung menulis string tipe data JSON ke aliran jaringan melalui respons.
Gunakan ObjectMapper Jackson untuk mengonversi objek Java ke data JSON dari Type String.
Untuk menghindari kode kacau Cina, Anda perlu mengatur format pengkodean karakter, seperti: UTF-8, GBK, dll.
Kodenya adalah sebagai berikut:
impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.stereotype.controller; impor org.springframework.ui.model; impor org.springframework.web.bind.annotation.requestmapping; org.springframework.web.bind.annotation.requestmethod; impor org.springframework.web.bind.annotation.requestparam; impor com.fasterxml.jackson.databind.objectmapper; // jsckson json processerimport java.util. *; Impor javax.servlet.servletoutputStream; impor javax.servlet.http. *; Impor java.io.printwriter; controlling@@date: 103- charset. Kelas HomeController {@RequestMapping (value = "/home/writejson", Method = requestMethod.get) public void writeJson (respons httpservletResponse) {objekMapper 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 = ""; coba {json = mapper.writevalueAsstring (peta); System.out.println (JSON); // skema 2 serveLetoutputStream os = response.getoutputStream (); // Dapatkan aliran output OS.write (json.getbytes (charset.forname ("gbk"))); // Tulis data JSON ke dalam stream os.flush (); // skema 1 respons.setcharacterencoding ("UTF-8"); // Atur format pengkodean respons.setContentType ("Teks/html"); // atur format data printwriter out = response.getWriter (); // Dapatkan objek tulis out.print (json); // Tulis data JSON ke dalam stream out.flush (); } catch (Exception e) {E.PrintStackTrace (); } // return "home"; }}Ada metode lain: Atur parameter produksi @RequestMapping, kodenya adalah sebagai berikut:
Ide: Gunakan anotasi @ResponseBody untuk secara langsung mengembalikan string JSON. Untuk mencegah kode kacau Cina, atur parameter produsen @RequestMapping ke "Teks/html; charset = UTF-8".
@RequestMapping (value = "/home/writejson", Method = requestMethod.get, menghasilkan = "text/html; charset = utf-8")@responseBodypublic objek writejson (httpservletResponse response) {objekmapper 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 = ""; coba {json = mapper.writevalueAsstring (peta); System.out.println (JSON); } catch (Exception e) {E.PrintStackTrace (); } return json;}Hasil operasi ditunjukkan pada gambar di bawah ini:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.