1. เพียงแค่ใส่คู่คีย์-ค่าด้วยตนเองลงใน JsonObject แล้วใส่ลงในวัตถุ JsonArray
รายการ <sarticle> al = articlemng.find (f); System.out.println (al.size ()); httpservletResponse hsr = servletactioncontext.getResponse (); ถ้า (null == al) {return; } สำหรับ (บทความ A: AL) {System.out.println (A.getId ()+A.getDescription ()+A.getTitle ()); } jsonarray json = new jsonarray (); สำหรับ (บทความ A: AL) {JsonObject jo = new JsonObject (); jo.put ("id", a.getId ()); jo.put ("title", a.getTitle ()); jo.put ("desc", a.getdescription ()); json.put (Jo); } ลอง {system.out.println (json.toString ()); HSR.Setcharacterencoding ("UTF-8"); hsr.getWriter (). เขียน (json.toString ()); } catch (ioexception e) {e.printstacktrace (); -รหัสด้านบน jsonarray เป็นแพ็คเกจ org.json.jsonarray แนะนำ
วิธีการคงที่ของ JsonArray ภายใต้แพ็คเกจ net.sf.json: FromObject (รายการ) นี่เป็นวิธีในการแปลง JSON อย่างรวดเร็วบนอินเทอร์เน็ต แต่สำหรับการดำเนินการ hibernate cascading วัตถุที่เกี่ยวข้องวิธีนี้จะรายงานข้อผิดพลาด หากการกำหนดค่า cascading ในไฟล์การแมปจะถูกลบออกมันจะไม่เป็นไร
นอกจากนี้ข้อกำหนดสำหรับรายการคือองค์ประกอบในมันเป็นสตริงหรือวัตถุมิฉะนั้น JSON จะไม่ทราบว่าคุณต้องการข้อมูลใด
<หลายชื่อชื่อ = "cmsent" คอลัมน์ = "comment_tid" not-null = "false" cascade = "delete">
อย่างไรก็ตามการดำเนินการเรียงซ้อนยังคงมีอยู่หลังจากทั้งหมดไม่เช่นนั้นข้อมูลจะซ้ำซ้อนและซ้ำซ้อนในอนาคต
วิธีแก้ปัญหาคือ: jsonarray submsgs = jsonarray.fromobject (วัตถุ, config);
jsonConfig config = new jsonConfig (); config.setJsonPropertyFilter (ใหม่ PropertyFilter () {Public Boolean ใช้ (Object Arg0, String arg1, Object Arg2) {ถ้า (arg1.equals ("บทความ") || arg1.equals ("แฟน ๆ ")) {return true; คำอธิบาย: ให้ฟังก์ชั่นการกรอง หากพบวัตถุที่เกี่ยวข้องมันจะกรองโดยอัตโนมัติและจะไม่ดำเนินการวัตถุที่เกี่ยวข้อง ที่นี่ฉันโพสต์รหัสสำหรับการกำหนดค่าการแมปความสัมพันธ์ในไฮเบอร์เนตเพื่อช่วยให้เข้าใจ:
<!-กำหนดค่าความสัมพันธ์ระหว่างหัวข้อและกลุ่ม-> <ชื่อหลายต่อหนึ่ง = "บทความ" คอลัมน์ = "บทความ _id" /> <!-กำหนดค่าความสัมพันธ์ระหว่างโพสต์หัวข้อและโพสต์ตอบกลับ-> <ตั้งชื่อ = "submessages" ตาราง = "sub_message" inverse = "true" cascade = "ทั้งหมด
สรุป:
1. jsonArray submsgs = jsonArray.FromObject (submessage, config); ที่กำหนดค่าเป็นทางเลือก เมื่อสถานการณ์ข้างต้นเกิดขึ้นคุณสามารถกำหนดค่าพารามิเตอร์การกำหนดค่า หากไม่มีข้อกำหนดดังกล่าวข้างต้นคุณสามารถใช้วิธี FromObject (OBJ) โดยตรง สิ่งที่แปลงคือข้อมูลรูปแบบวัตถุ JSON มาตรฐานดังนี้:
{["attr", "เนื้อหา", ... }, ... ]}
2. jsonObject jtmsg = jsonobject.fromobject (ThemeMessage, config); สิ่งนี้ใช้เป็นพิเศษเพื่อแยกวิเคราะห์ POJO มาตรฐานหรือวัตถุแผนที่ ไม่จำเป็นต้องพูดรูปแบบของวัตถุ pojo คือรูปแบบของแผนที่เป็นเช่นนี้ {"str", "str"}
---------------------
สำหรับ JsonArray และ JSON ฉันเคยอาเจียนมาก่อน! - -
ถั่ว
แพ็คเกจ com.nubb.bean; นำเข้า java.io.serializable; บุคคลระดับสาธารณะใช้ serializable {ส่วนตัวคงที่สุดท้าย long serialversionuid = 1l; ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; ที่อยู่สตริงส่วนตัว สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; } สตริงสาธารณะ getAddress () {return address; } โมฆะสาธารณะ setAddress (ที่อยู่สตริง) {this.address = ที่อยู่; - jsonutil
แพ็คเกจ com.nubb.test; นำเข้า java.io.ioexception; นำเข้า java.nio.file.files; นำเข้า java.nio.file.path; นำเข้า java.nio.file.standardopenoption; นำเข้า Java.util.arraylist; com.nubb.bean.person; คลาสสาธารณะ jonserializer {สตริงสุดท้ายคงที่เริ่มต้น charset_name = "utf-8"; สาธารณะคงที่ <T> สตริง serialize (t Object) {return json.tojsonstring (วัตถุ); } สาธารณะคงที่ <t> t deserialize (สตริงสตริง, คลาส <t> clz) {return json.parseObject (String, clz); } สาธารณะคงที่ <t> t โหลด (พา ธ พา ธ , คลาส <t> clz) พ่น ioexception {return deserialize (สตริงใหม่ (files.readallbytes (พา ธ ), default_charset_name), clz); } สาธารณะคงที่ <T> โมฆะบันทึก (เส้นทางพา ธ , t วัตถุ) พ่น IOException {ถ้า (files.NotExists (path.get.getParent ())) {files.createdirectories (path.get.getParent ()); } files.write (พา ธ , serialize (วัตถุ) .getBytes (default_charset_name), Standardopenoption.write, Standardopenoption.create, Standardopenoption.truncate_existing); } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {person person1 = บุคคลใหม่ (); person1.setAddress ("ที่อยู่"); person1.setage (11); person1.setName ("amao"); บุคคลบุคคล 2 = คนใหม่ (); person2.setAddress ("ที่อยู่"); person2.setage (11); person2.setName ("amao"); รายการ <person> lp = new ArrayList <Person> (); LP.Add (person1); LP.Add (Person2); System.out.println (serialize (LP)); -เอาท์พุท:
การคัดลอกรหัสมีดังนี้:
[{"ที่อยู่": "ที่อยู่", "อายุ": 11, "ชื่อ": "amao"}, {"ที่อยู่": "ที่อยู่", "อายุ": 11, "ชื่อ": "amao"}]
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น