راجعت بعض المعلومات عبر الإنترنت وشعرت أنها معقدة للغاية. هنا ، استخدمت طريقتين بسيطتين للغاية لحل مشكلة الكود المشوهة الصيني.
إصدار الربيع: 3.2.2.release
نسخة جاكسون جاسون: 2.1.3
الحل: تقوم طريقة وحدة التحكم بكتابة بيانات JSON مباشرة إلى دفق الشبكة من خلال الاستجابة.
استخدم Jackson ObjectMapper لتحويل كائنات Java إلى بيانات JSON من سلسلة النوع.
لتجنب الكود المشوهة الصينية ، تحتاج إلى تعيين تنسيقات ترميز الأحرف ، مثل: UTF-8 ، GBK ، إلخ.
الرمز كما يلي:
استيراد org.springframework.beans.factory.annotation. org.springframework.web.bind.annotation.requestmethod ؛ استيراد org.springframework.web.bind.annotation.requestparam ؛ import com.fasterxml.jackson.databind.objectmapper ؛ // JSCKSON json processerimport java.util. * ؛ import javax.servlet.servletoutputstream ؛ استيراد javax.servlet.http. * ؛ HomeController {REquestMapping (value = "/home/writejson" ، method = requestMethod.get) public void 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" ، "جاكسون") ؛ سلسلة json = "" ؛ حاول {json = mapper.writevalueasString (map) ؛ 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") ؛ // قم بتعيين استجابة تنسيق الترميز. // قم بتعيين تنسيق البيانات printWriter Out = response.getWriter () ؛ // الحصول على كائن الكتابة Out.print (json) ؛ // اكتب بيانات JSON في الدفق Out.flush () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } // العودة "الصفحة الرئيسية" ؛ }}هناك طريقة أخرى: اضبط معلمة @requestmapping ، فإن الكود كما يلي:
IDEA: استخدم شرح @ResponseBody لإعادة سلسلة JSON مباشرة. من أجل منع التعليمات البرمجية المشوهة الصينية ، قم بتعيين معلمة المنتجين لـ requestMapping إلى "Text/HTML ؛ Charset = UTF-8".
requestmapping (value = "/home/writejson" ، method = requestMethod.get ، reduces = "text/html ؛ charset = utf-8")@reponsebodypublic object writejson (httpservletsponse repress) {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" ، "جاكسون") ؛ سلسلة json = "" ؛ حاول {json = mapper.writevalueasString (map) ؛ System.out.println (JSON) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } إرجاع json ؛}تظهر نتائج العملية في الشكل أدناه:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.