ฉันตรวจสอบข้อมูลออนไลน์และรู้สึกว่ามันค่อนข้างซับซ้อน ที่นี่ฉันใช้สองวิธีง่าย ๆ ในการแก้ปัญหารหัสภาษาจีนที่อ่านไม่ออก
เวอร์ชันสปริง: 3.2.2.release
Jackson JSON เวอร์ชัน: 2.1.3
วิธีแก้ปัญหา: วิธีการของคอนโทรลเลอร์เขียนข้อมูลประเภทสตริง JSON โดยตรงไปยังสตรีมเครือข่ายผ่านการตอบสนอง
ใช้ ObjectMapper ของ Jackson เพื่อแปลงวัตถุ Java เป็นข้อมูล JSON ของประเภทสตริง
เพื่อหลีกเลี่ยงรหัสภาษาจีนที่อ่านไม่ออกคุณต้องตั้งค่ารูปแบบการเข้ารหัสอักขระเช่น: UTF-8, GBK ฯลฯ
รหัสมีดังนี้:
นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.stereotype.controller; นำเข้า org.springframework.ui.model; นำเข้า org.springframework.web.bind.annotation. org.springframework.web.bind.annotation.requestmethod; นำเข้า org.springframework.web.bind.annotation.requestparam; นำเข้า com.fasterxml.jackson.databind.objectmapper; // JSCKSON JSON PRASSERERIMPORT JAVA.UTIL.*; นำเข้า Javax.servlet.ServleToutputStream; นำเข้า Javax.servlet.http.*; นำเข้า java.io.printwriter; นำเข้า Java.nio.charset.charset; */ @controllerpublic คลาส homecontroller {@requestmapping (value = "/home/writejson", method = requestmethod.get) โมฆะสาธารณะ writejson (การตอบสนอง httpservletResponse) {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"); สตริง json = ""; ลอง {json = mapper.writevalueasstring (แผนที่); System.out.println (JSON); // Scheme 2 ServletOutputStream OS = Response.getOutputStream (); // รับเอาท์พุทสตรีม OS.WRITE (json.getBytes (charset.forName ("GBK"))); // เขียนข้อมูล JSON ลงในสตรีม os.flush (); // Scheme 1 Response.Setcharacterencoding ("UTF-8"); // ตั้งค่ารูปแบบการเข้ารหัส Response.SetContentType ("text/html"); // ตั้งค่ารูปแบบข้อมูล printwriter out = response.getWriter (); // รับวัตถุการเขียนออกไปพิมพ์ (JSON); // เขียนข้อมูล JSON ลงในสตรีม out.flush (); } catch (exception e) {e.printstacktrace (); } // กลับ "บ้าน"; -มีวิธีอื่น: ตั้งค่าพารามิเตอร์การผลิตของ @requestmapping รหัสมีดังนี้:
แนวคิด: ใช้คำอธิบายประกอบ @ResponseBody เพื่อส่งคืนสตริง JSON โดยตรง เพื่อป้องกันรหัสที่อ่านไม่ออกภาษาจีนตั้งค่าพารามิเตอร์ผู้ผลิตของ @requestmapping เป็น "ข้อความ/html; charset = utf-8"
@RequestMapping (value = "/home/writejson", method = requestmethod.get, ผลิต = "ข้อความ/html; charset = utf-8")@responsebodypublic object writejson (httpservletResponse) 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"); สตริง json = ""; ลอง {json = mapper.writevalueasstring (แผนที่); System.out.println (JSON); } catch (exception e) {e.printstacktrace (); } return json;}ผลการดำเนินการแสดงในรูปด้านล่าง:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น