Simple JSON هو إطار تحليل Java JSON تم تطويره بواسطة Google ، استنادًا إلى بروتوكول Apache.
الصفحة الرئيسية Json-Simple: //www.vevb.com/softs/455885.html
الملف الذي تم تنزيله هو: json_simple.jar
مثال 1: طريقة مريحة للغاية لاستخدام jsonvalue
system.out.println ("============================================ ؛ OBJ = jsonvalue OBJ2 = (jsonobject) array.get (1) ؛ S = "}" ؛يرث JsonObject خريطة ، بينما يرث Jsonarray قائمة ، بحيث يمكنك استخدام الطريقة القياسية للخريطة والقائمة لاستخدام JSonObject و JSonarray.
يمكن لـ JSONVALUE استخدام المصفوفات أو الكائنات.
مثال 2: طريقة سريعة ، باستخدام Jsonparser
jsonparser parser = new jsonparser () ؛ System.out.println ("==================================================================================== Array = (jsonarray) OBJ ؛ System.out.println ("====== حقل /" 1 /"===================================== ؛ System.out.println (obj2.get (" 1 ") ؛ s =" {} "؛ obj = parser.parse (s) ؛ S = [5 ،] "يتطلب استخدام jsonparser الاستثناء.
مثال 3: معالجة الاستثناء
String jsontext = "[[null ، 123.45 ،/" a // tb c/"]} ، true" ؛ jsonparser parser = new jsonparser () ؛ حاول {parser.parse (jsontext) ؛ } catch (parseException pe) {system.out.println ("الموضع:" + pe.getPosition ()) ؛ system.out.println (pe) ؛ }نتائج التنفيذ:
الموضع: 25 الرمز المميز غير المتوقع (}) في الموضع 25.
مثال 4: مصنع الحاويات
استخدم فئة ContainerFactory لإنشاء مصنع حاوية.
String jsontext = "{/" first/": 123 ،/" second/": [4 ، 5 ، 6] ،/" Third/": 789}" ؛ jsonparser parser = new jsonparser () ؛ containerfactory containerfactory = new ContainerFactory () {public list creatarRayContainer () {return new LinkedList () ؛ } الخريطة العامة createObjectContainer () {return New LinkedHashMap () ؛ }} ؛ جرب {map json = (map) parser.parse (jsontext ، containerfactory) ؛ iterator iter = json.entryset (). iterator () ؛ system.out.println ("== ideater result ==") ؛ بينما (iter.hasnext ()) {map.entry entry = (map.entry) iter.next () ؛ system.out.println (entry.getKey () + "=>" + enter.getValue ()) ؛ } system.out.println ("== tojsonstring () ==") ؛ System.out.println (jsonvalue.tojsonstring (json)) ؛ } catch (parseException pe) {system.out.println (pe) ؛ }النتائج كما يلي:
== تكرار النتيجة == أولاً => 123 ثانية => [4،5،6] ثالث => 789 == tojsonstring () == {"first": 123 ، "Second": [4،5،6] ، "Third": 789} إذا لم تستخدم مصانع الحاويات ، فإن Simple-Json يستخدم JsonObject و JSonarray افتراضيًا. مثال 5: توصي معالجة محتوى SAX القابلة للتوقف SimpleJson طريقة معالجة محتوى SAX بسيطة قابلة للتوقف لمعالجة تدفقات النص. يمكن للمستخدم البقاء في أي وقت في دفق الإدخال المنطقي ، ثم معالجة المنطق الآخر ، ثم متابعة المعالجة السابقة. لا تنتظر معالجة الدفق بأكمله. هنا مثال. keyfinder.java: class keyfinder تنفذ contentHandler {قيمة الكائن الخاص ؛ تم العثور على منطقية خاصة = خطأ ؛ نهاية منطقية خاصة = خطأ ؛ مفتاح السلسلة الخاص ؛ سلسلة خاصة public void setMatchKey (String MatchKey) {this.matchkey = matchkey ؛ } الكائن العام getValue () {return value ؛ } boolean public isend () {return end ؛ } public void setFound (تم العثور على منطقية) {this.found = found ؛ } boolean public isFound () {return found ؛ } public void StartJson () يلقي parseException ، ioException {found = false ؛ نهاية = خطأ ؛ } public void endjson () يلقي ParseException ، ioException {end = true ؛ } Public Boolean Primitive (قيمة الكائنات) يلقي ParseException ، ioException {if (key! = null) {if (key.equals (matchkey)) {found = true ؛ this.value = القيمة ؛ المفتاح = فارغ ؛ العودة كاذبة }} إرجاع صحيح ؛ } startarray boolean العامة () يلقي ParseException ، ioException {return true ؛ } boolean startObject () يلقي ParseException ، ioException {return true ؛ } startObjectEntry (مفتاح السلسلة) المنطقي العام (مفتاح السلسلة) يلقي parseException ، ioException {this.key = key ؛ العودة صحيح. } endarray boolean العامة () يلقي ParseException ، ioException {return false ؛ } boolean public endobject () يلقي ParseException ، ioException {return true ؛ } public boolean endobjectentry () يلقي parseException ، ioException {return true ؛ }} المنطق الرئيسي: String jsontext = "{/" first/": 123 ،/" second/": [{/" k1/": {/" id/":/" id1/"}} ، 4 ، 5 ، 6 ، {/ jsonparser parser = newjsonparser () ؛ keyfinder finder = newKeyFinder () ؛ Finder.setMatchKey ("id") ؛ جرب {while (! finder.isend ()) {parser.parse (jsontext ، finder ، true) ؛ if (finder.isfound ()) {finder.setFound (false) ؛ System.out.println ("Found ID:") ؛ system.out.println (finder.getValue ()) ؛ }}} catch (parseException pe) {pe.printStackTrace () ؛ } نتائج التنفيذ:معرف موجود: ID1 وجدت المعرف: 123 وجدت معرف: NULLمثال 6: يتم تحليل الرسم البياني الكائن بأكمله باستخدام ساكس يشبه
يقوم محول الفئة بتنفيذ contentHandler {private stack valuestack ؛ الكائن العام getResult () {if (valuestack == null || valuestack.size () == 0) return null ؛ إرجاع valuestack.peek () ؛ } public boolean endarray () يلقي ParseException ، ioException {trackback () ؛ العودة صحيح. } public void endjson () يلقي ParseException ، ioException {} public boolean endobject () يلقي parseException ، ioException {trackback () ؛ العودة صحيح. } public boolean endobjectEntry () يلقي parseException ، ioException {comform value = valuestack.pop () ؛ مفتاح الكائن = valuestack.pop () ؛ Map Parent = (MAP) Valuestack.peek () ؛ parent.put (المفتاح ، القيمة) ؛ العودة صحيح. } private void trackback () {if (valuestack.size ()> 1) {object value = valuestack.pop () ؛ الكائن PRIM = ValUestack.peek () ؛ if (prev مثيل string) {valuestack.push (value) ؛ }}} private void consplumpevalue (comfort value) {if (valuestack.size () == 0) valuestack.push (value) ؛ else {object prev = valuestack.peek () ؛ if (prev extryof list) {list array = (list) prev ؛ Array.Add (القيمة) ؛ } آخر {valuestack.push (value) ؛ }}} Public Boolean Primitive (قيمة الكائن) يلقي ParseException ، ioException {consumptevalue (value) ؛ العودة صحيح. } startarray startArray () عام boolean () يلقي parseException ، ioException {list array = new jsonarray () ؛ الاستهلاك Value (صفيف) ؛ valuestack.push (صفيف) ؛ العودة صحيح. } public void StartJson () يلقي ParseException ، ioException {valuestack = new stack () ؛ } startObject startObject () BOOLEAN العامة () يلقي parseException ، ioException {map object = new jsonobject () ؛ الاستهلاك (كائن) ؛ valuestack.push (كائن) ؛ العودة صحيح. } startObjectEntry (مفتاح السلسلة) المنطقي العام (مفتاح السلسلة) يلقي parseException ، ioException {valuestack.push (key) ؛ العودة صحيح. }} منطق الطريقة الرئيسية:String jsonstring = <input json text> ؛ قيمة الكائن = فارغة ؛ jsonparser parser = new jsonparser () ؛ Transformer Transformer = New Transformer () ؛ parser.parse (jsonstring ، transformer) ؛ value = transformer.getResult () ؛نتائج التنفيذ:
String jsonstring = <input json text> ؛ قيمة الكائن = فارغة ؛ jsonparser parser = newjsonparser () ؛ القيمة = parser.parse (jsonstring) ؛ملاحظة: JSONPAUSER ليس آمنًا للمعلومات.
JSON_ENCODE - ترميز JSON للمتغيرات.
الوصف: String JSON_ENCODE (قيمة $) ، إرجاع نموذج JSON من قيمة القيمة.
المعلمات: يمكن أن تكون القيمة الواجب ترميزها أي نوع بيانات باستثناء نوع المورد
يمكن أن تقبل هذه الوظيفة فقط بيانات UTF-8 المشفرة (ملاحظة الترجمة: تشير إلى بيانات نوع الحرف/السلسلة)
قيمة الإرجاع: إذا كان الترميز ناجحًا ، فسيتم إرجاع سلسلة ممثلة في JSON.