يقرأ دفق واجهة برمجة تطبيقات ويكتب أحداثًا منفصلة لمحتوى JSON. يقرأ Jsonparser البيانات ، بينما يكتب JSongenerator البيانات. إنها الطريقة الأكثر كفاءة في الثلاثة ، مع أدنى النفقات العامة وأسرع عملية قراءة/كتابة. إنه مشابه لمحلل Stax لـ XML.
في هذه المقالة ، سنعرض كيفية قراءة وكتابة بيانات JSON باستخدام API من Jackson. يجب التعامل مع تشغيل واجهات برمجة التطبيقات باستخدام JSON مقابل كل التفاصيل بحذر. المثال التالي سيستخدم فئتين:
فئة JSongenerator - يكتب إلى JSON String.
Songenerator هي الفئة الأساسية التي تحدد محتوى JSON الذي كتبه واجهات برمجة التطبيقات العامة. إنشاء مثيل باستخدام طريقة المصنع لمثيل JSONFACTORY.
إعلانات الفصل فيما يلي إعلان فئة org.codehaus.jackson.jsongenerator:
الطبقة المجردة العامة jsongenerator يمتد أدوات الكائنات القابلة للإغلاق
الطبقات المتداخلة
| Sn | الفصول والأوصاف |
|---|---|
| 1 | فئة ثابتة jSongenerator.feature // التعداد يحدد جميع الوظائف القابلة للتجميل للمولد. |
مُنشئ
| Sn | الفصول والأوصاف |
|---|---|
| 1 | مُنشئ افتراضي |
JSONPARSER CLASS - PARSES JSON Strings.
JSONPARSER هي الفئة الأساسية التي تحدد محتوى JSON الذي يستخدمه واجهة برمجة التطبيقات العامة للقراءة. إنشاء مثيل باستخدام طريقة المصنع لمثيل JSONFACTORY.
إعلانات الفصل فيما يلي إعلان فئة org.codehaus.jackson.jsonparser:
يمتد JSONPARSER من الفئة المجردة العامة الكائنات الأدوات القابلة للإغلاق ، مصنوعة من الإصدار
الطبقات المتداخلة
| Sn | الفصول والأوصاف |
|---|---|
| 1 | فئة ثابتة jsonparser.feature // التعداد يحدد جميع الوظائف القابلة للتجادل للمحلل. |
| 2 | يمكن استخدام jsonparser jsonparser.numbertype // التعدادات لأنواع الأرقام "المحلية" المحتملة (الأمثل). |
مُنشئ
| Sn | الفصول والأوصاف |
|---|---|
| 1 | محمي JSONPARSER () // مُنشئ افتراضي |
| 2 | محمي Jsonparser (ميزات INT) |
الطريقة الموروثة ترث هذه الفئة طرق الفصل التالية:
نسخة الكود كما يلي:
java.lang.Object
اكتب إلى JSON باستخدام JSongenerator
استخدام JSongenerator بسيط للغاية. أولاً ، استخدم طريقة jsonfactory.createjsongenerator () لإنشاء jsongenerator ، واستخدم طريقة الكتابة *** () لكتابة كل قيمة JSON.
jsonfactory jasonfactory = new jsonfactory () ؛ jsongenerator jsongenerator = jasonfactory.createjsongenerator (ملف جديد ("student.json") ، jsonencoding.utf8) ؛ // {jsongenerator.writeStartObject () ؛ "ماهيش كومار") ؛دعونا نلقي نظرة على عملية jsongenerator. قم بإنشاء ملف فئة Java يسمى JackSontester في الدليل C:/> Jackson_Workspace.
ملف: jacksontester.java
استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد java.util.map ؛ استيراد org.codehaus.jackson.jsonencoding ؛ استيراد org.codehaus.jackson.jsonfactory org.codehaus.jackson.map.jsonmappexception ؛ import org.codehaus.jackson.map.ObjectMapper ؛ public class jacksontester {public static void main (String args []) {JackSontester tester = new JackSontester () ؛ حاول {jsonfactory jasonfactory = new jsonfactory () ؛ jSongenerator jSongenerator = jasonfactory.createjsongenerator (ملف جديد ("student.json") ، jsonencoding.utf8) ؛ // {jsongenerator.writeStartObject () ؛ // "name": "Mahesh Kumar" JSongenerator.WriteStringfield ("Name" ، "Mahesh Kumar") ؛ // "Age": 21 jSongenerator.Writenumberfield ("Age" ، 21) ؛ // "التحقق": false jsongenerator.writeBooleanfield ("التحقق" ، خطأ) ؛ // "Marks": [100 ، 90 ، 85] JSongenerator.WriteFieldName ("Marks") ؛ // [jsongenerator.writestartarray () ؛ // 100 ، 90 ، 85 jsongenerator.writenber (100) ؛ jsongenerator.writenumber (90) ؛ jsongenerator.writenumber (85) ؛ //] jsongenerator.writeendarray () ؛ //} jsongenerator.writeendObject () ؛ jsongenerator.close () ؛ // النتيجة student.json // {// "name": "Mahesh Kumar" ، // "Age": 21 ، // "expiled": false ، // "marks": [100،90،85] //} objectMapper mapper = new ObjectMapper () ؛ خريطة <سلسلة ، كائن> datamap = mapper.readvalue (ملف جديد ("student.json") ، map.class) ؛ System.out.println (datamap.get ("name")) ؛ System.out.println (datamap.get ("Age")) ؛ System.out.println (datamap.get ("exerified")) ؛ system.out.println (datamap.get ("marks")) ؛ } catch (jsonparseexception e) {e.printStackTrace () ؛ } catch (jsonmappexception e) {E.PrintStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}نتائج التحقق
استخدم Javac لتجميع الفصل التالي:
نسخة الكود كما يلي:
C:/Jackson_Workspace> Javac Jacksontester.java
الآن قم بتشغيل JackSontester لترى النتيجة:
نسخة الكود كما يلي:
C:/Jackson_Workspace> Java Jacksontester
تحقق من الإخراج
Mahesh Kumar21false [100 ، 90 ، 85]
اقرأ JSON باستخدام Jsonparser
استخدام Jsonparser بسيط للغاية. قم أولاً بإنشاء jsonparser باستخدام طريقة jsonfactory.createjsonparser () واستخدم طريقة NextToken () لقراءة كل سلسلة JSON كعلامة. تحقق من كل رمز والعملية المقابلة.
jsonfactory jasonfactory = new jsonfactory () ؛ jjsonparser jsonparser = jasonfactory.createjsonparser (ملف جديد ("student.json")) ؛ if ("name" .equals (fieldName)) {// انتقل إلى to to jsonparser.nexttoken () ؛ system.out.println (jsonparser.getText ()) ؛ }}دعونا نلقي نظرة على عمليات Jsonparser. قم بإنشاء فصل يدعى JackSontester في Java في المجلد C:/> Jackson_Workspace.
ملف: jacksontester.java
استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد org.codehaus.jackson.jsonencoding ؛ استيراد org.codehaus.jackson.jsonfactory ؛ import org.codehaus.jackson.jsongenerator ؛ org.codehaus.jackson.jsontoken ؛ import org.codehaus.jackson.map.jsonmappexception ؛ public class jacksontester {public static void main (String args []) حاول {jsonfactory jasonfactory = new jsonfactory () ؛ jSongenerator jSongenerator = jasonfactory.createjsongenerator (ملف جديد ("student.json") ، jsonencoding.utf8) ؛ jsongenerator.writestartobject () ؛ jsongenerator.writestringfield ("name" ، "Mahesh Kumar") ؛ jsongenerator.writenumberfield ("Age" ، 21) ؛ jsongenerator.writeBooleanfield ("التحقق" ، خطأ) ؛ jsongenerator.writeFieldName ("Marks") ؛ jsongenerator.writestartarray () ؛ // [jsongenerator.writenumber (100) ؛ jsongenerator.writenumber (90) ؛ jsongenerator.writenumber (85) ؛ jsongenerator.writeendarray () ؛ jsongenerator.writeEndObject () ؛ jsongenerator.close () ؛ // النتيجة student.json // {// "name": "Mahesh Kumar" ، // "Age": 21 ، // "expiled": false ، // "marks": [100،90،85] //} jsonparser jsonparser = jasonfactory.createjsonparser (new file ( بينما (jsonparser.nextToken ()! = jsontoken.end_object) {// احصل على سلسلة الرمز المميز الحالي = jsonparser.getCurrentName () ؛ if ("name" .equals (fieldName)) {// انتقل إلى to to jsonparser.nexttoken () ؛ system.out.println (jsonparser.getText ()) ؛ } if ("Age" .equals (fieldName)) {// انتقل إلى الرمز المميز jsonparser.nextToken () ؛ System.out.println (jsonparser.getNumberValue ()) ؛ } if ("التحقق" .equals (fieldName)) {// انتقل إلى الرمز المميز jsonparser.nextToken () ؛ system.out.println (jsonparser.getBooleanvalue ()) ؛ } if ("marks" .equals (fieldName)) {// الانتقال إلى [jsonparser.nextToken () ؛ // loop till token يساوي "]" بينما (jsonparser.nextToken ()! = jsontoken.end_array) {system.out.println (jsonparser.getnumbervalue ()) ؛ }}}} catch (jsonparsexception e) {e.printstacktrace () ؛ } catch (jsonmappexception e) {E.PrintStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}نتائج التحقق
ترجمة استخدام Javac لتجميع الفصول التالية:
نسخة الكود كما يلي:
C:/Jackson_Workspace> Javac Jacksontester.java
الآن قم بتشغيل Jacksontester وشاهد النتيجة على النحو التالي:
نسخة الكود كما يلي:
C:/Jackson_Workspace> Java Jacksontester
تحقق من الإخراج
Mahesh Kumar21false [100 ، 90 ، 85]