บทความนี้วิเคราะห์สามวิธีในการแยกวิเคราะห์ JSON ตาม Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
1. JSON คืออะไร?
JSON เป็นโครงสร้างข้อมูลที่แทนที่ XML เมื่อเทียบกับ XML มีขนาดเล็กลง แต่มีความสามารถในการอธิบายที่ดี เนื่องจากมีขนาดเล็กเครือข่ายจะส่งข้อมูลเพื่อลดปริมาณการใช้งานและความเร็วที่เพิ่มขึ้น
JSON เป็นสตริงของสตริง แต่องค์ประกอบจะถูกทำเครื่องหมายด้วยสัญลักษณ์เฉพาะ
{} วงเล็บสองเท่าแสดงถึงวัตถุ
[] วงเล็บแสดงอาร์เรย์
"" ในคำพูดสองเท่าคือแอตทริบิวต์หรือค่า
: ลำไส้ใหญ่ระบุว่าหลังเป็นค่าของอดีต (ค่านี้สามารถเป็นสตริงตัวเลขหรืออาร์เรย์หรือวัตถุอื่น)
ดังนั้น {"ชื่อ": "Michael"} สามารถเข้าใจได้ว่าเป็นวัตถุที่มีชื่อเป็น Michael
และ [{"ชื่อ": "Michael"}, {"Name": "Jerry"}] หมายถึงอาร์เรย์ที่มีสองวัตถุ
แน่นอนคุณยังสามารถใช้ {"ชื่อ": ["Michael", "Jerry"]} เพื่อทำให้ง่ายขึ้นด้านบนซึ่งเป็นวัตถุที่มีอาร์เรย์ของชื่อ
2. การวิเคราะห์ JSON แบบดั้งเดิม: การวิเคราะห์ JSON
1. สร้างสตริง JSON
สตริงคงที่สาธารณะ createJSonstring (คีย์สตริง, ค่าวัตถุ) {jsonObject jsonObject = new jsonObject (); jsonObject.put (คีย์, ค่า); return jsonobject.toString ();}2. การแยกวิเคราะห์ json strings
มันถูกแบ่งออกเป็นสามสถานการณ์ต่อไปนี้: javabean, อาร์เรย์รายการและอาร์เรย์รายการที่มีแผนที่ซ้อนกัน:
นำเข้า java.util.arraylist; นำเข้า java.util.hashmap; นำเข้า java.util.iterator; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า org.json.jsonarray; นำเข้า org.json.jsonobject; คลาส JSontools {บุคคลคงที่สาธารณะ getPerson (คีย์สตริง, สตริง jsonstring) {บุคคลบุคคล = บุคคลใหม่ (); ลอง {jsonObject jsonObject = new JsonObject (jSonstring); jsonObject personObject = jsonObject.getjsonObject ("บุคคล"); person.setId (personobject.getint ("id")); person.setName (personobject.getString ("ชื่อ")); person.setAddress (personobject.getString ("ที่อยู่")); } catch (Exception e) {// todo: จัดการข้อยกเว้น} ผู้ส่งคืน; } รายการคงที่สาธารณะ getPersons (คีย์สตริง, สตริง jsonstring) {list list = new ArrayList (); ลอง {jsonObject jsonObject = new JsonObject (jSonstring); // ส่งคืนอาร์เรย์ของ JSON JSONARRAY JSONARRAY = JSONOBJECT.GETJSONARRAY (คีย์); สำหรับ (int i = 0; i <jsonArray.length (); i ++) {jsonObject jsonObject2 = jsonArray.getjsonObject (i); บุคคล = บุคคลใหม่ (); person.setId (jsonObject2.getInt ("id")); person.setName (jsonObject2.getString ("ชื่อ")); person.setAddress (jsonObject2.getString ("ที่อยู่")); list.add (บุคคล); }} catch (Exception e) {// todo: จัดการข้อยกเว้น} รายการส่งคืน; } รายการคงที่สาธารณะ getList (คีย์สตริง, สตริง jsonstring) {list list = new ArrayList (); ลอง {jsonObject jsonObject = new JsonObject (jSonstring); jsonArray jsonarray = jsonobject.getjsonarray (คีย์); สำหรับ (int i = 0; i <jsonarray.length (); i ++) {สตริง msg = jsonarray.getString (i); list.add (msg); }} catch (Exception e) {// todo: จัดการข้อยกเว้น} รายการส่งคืน; } รายการคงที่สาธารณะ> listkeYmaps (คีย์สตริง, สตริง jsonstring) {list> list = new ArrayList> (); ลอง {jsonObject jsonObject = new JsonObject (jSonstring); jsonArray jsonarray = jsonobject.getjsonarray (คีย์); สำหรับ (int i = 0; i <jsonArray.length (); i ++) {jsonObject jsonObject2 = jsonArray.getjsonObject (i); แผนที่แผนที่ = ใหม่ hashmap (); ตัววนซ้ำ iterator = jsonObject2.keys (); ในขณะที่ (iterator.hasnext ()) {string json_key = iterator.next (); Object json_value = jsonObject2.get (json_key); if (json_value == null) {json_value = ""; } map.put (json_key, json_value); } list.add (แผนที่); }} catch (Exception e) {// todo: จัดการข้อยกเว้น} รายการส่งคืน; -3. การวิเคราะห์ GSON ของ JSON
1. สร้างสตริง JSON
นำเข้า com.google.gson.gson; คลาสสาธารณะ Jsonutils {สตริงคงที่สาธารณะ createjsonObject (Object OBJ) {GSON GSON = new GSON (); string str = gson.tojson (obj); return str; -2. วิเคราะห์ JSON
นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า java.util.map นำเข้า com.google.gson.gson; นำเข้า com.google.gson.reflect.typetoken; @param cls * @return */ สาธารณะคงที่ t getPerson (สตริง jsonstring, คลาส cls) {t t = null; ลอง {gson gson = new gson (); t = gson.fromjson (jsonstring, cls); } catch (Exception e) {// todo: จัดการข้อยกเว้น} return t; } / ** * ใช้ GSON เพื่อแยกวิเคราะห์รายการ * * @param * @param jsonstring * @param cls * @return * / รายการคงที่สาธารณะ getPersons (สตริง jsonstring, คลาส cls) {รายการรายการ = new ArrayList (); ลอง {gson gson = new gson (); list = gson.fromjson (jsonstring, typetoken ใหม่> () {} .getType ()); } catch (exception e) {} return list; } / ** * @param jsonstring * @return * / รายการคงที่สาธารณะ getList (String jsonstring) {list list = new ArrayList (); ลอง {gson gson = new gson (); list = gson.fromjson (jsonstring, typetoken ใหม่> () {} .getType ()); } catch (Exception E) {// todo: จัดการข้อยกเว้น} รายการส่งคืน; } รายการคงที่สาธารณะ> listKeyMaps (สตริง jsonstring) {list> list = new ArrayList> (); ลอง {gson gson = new gson (); list = gson.fromjson (jsonstring, typetoken ใหม่ >> () {} .getType ()); } catch (Exception E) {// todo: จัดการข้อยกเว้น} รายการส่งคืน; -4. การแยกวิเคราะห์ Fastjson
นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า java.util.map นำเข้า com.alibaba.fastjson.json; นำเข้า com.alibaba.fastjson.typereference; คลาสสาธารณะ ลอง {t = json.parseObject (jsonstring, cls); } catch (Exception e) {// todo: จัดการข้อยกเว้น} return t; } รายการคงที่สาธารณะ getPersonList (String JSonstring, Class cls) {list list = new ArrayList (); ลอง {list = json.parsearray (jsonstring, cls); } catch (Exception E) {// todo: จัดการข้อยกเว้น} รายการส่งคืน; } รายการคงที่สาธารณะ> getPersonListMap1 (สตริง jsonstring) {list> list = new ArrayList> (); ลอง {list = json.parseObject (jsonstring, typereference ใหม่ >> () {} .getType ()); } catch (Exception E) {// todo: จัดการข้อยกเว้น} รายการส่งคืน; -สรุป:
สำหรับอุปกรณ์มือถือโดยเฉพาะอย่างยิ่งในกรณีของสภาพแวดล้อมเครือข่ายที่ไม่ดีและข้อ จำกัด ด้านการจราจร JSON จะประหยัดการรับส่งข้อมูลและมีประสิทธิภาพการส่งที่สูงขึ้นเมื่อเทียบกับการส่งข้อมูลรูปแบบ XML ในบรรดาวิธีการวิเคราะห์ทั้งสามนี้ FastJSON นั้นมีประสิทธิภาพมากที่สุดและแนะนำ
PS: เกี่ยวกับการดำเนินการ JSON นี่คือเครื่องมือออนไลน์ JSON ที่ใช้งานได้จริงสำหรับการอ้างอิงของคุณ: การตรวจสอบรหัส JSON ออนไลน์การตรวจสอบความสวยงามและการจัดรูปแบบเครื่องมือ: เครื่องมือการจัดรูปแบบออนไลน์ JSON : เครื่องมือแปลง Mutual XML/JSON ออนไลน์: JSON CODE การจัดรูปแบบออนไลน์/การตกแต่ง/การบีบอัด/แก้ไข/แปลงเครื่องมือ: เครื่องมือการบีบอัด/หลบหนี JSON ออนไลน์: C รูปแบบภาษา/HTML/CSS/JSON รหัสการจัดรูปแบบและเครื่องมือเสริมความงาม:
http://tools.vevb.com/code/json
http://tools.vevb.com/code/jsonformat
http://tools.vevb.com/code/xmljson
http://tools.vevb.com/code/jsoncodeformat
http://tools.vevb.com/code/json_yasuo_trans
http://tools.vevb.com/code/ccode_html_css_json
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน