Потоковая API читает и пишет дискретные события в контент JSON. JSonParser читает данные, в то время как JSongenerator пишет данные. Это самый эффективный метод из трех, с самыми низкими накладными расходом и самой быстрой операцией чтения/записи. Это похоже на синтаксический анализатор Stax для XML.
В этой статье мы покажем, как читать и написать данные JSON, используя потоковое API Джексона. Потоковая работа API с использованием JSON для каждой детали должна быть обработана с осторожностью. В следующем примере будут использоваться два класса:
JSongenerator Class - пишет JSON String.
Songenerator - это базовый класс, который определяет контент JSON, написанный Public API. Создайте экземпляр, используя заводский метод экземпляра JSONFACTORY.
Объявления классов Ниже приведены объявление класса org.codehaus.jackson.jsongenerator:
Public Abstract Class JSongenerator Extens Object Supressired Closable
Вложенные классы
| С | Классы и описания |
|---|---|
| 1 | Статический класс jsongenerator.feature // Перечисление определяет все функции, подлежимые генератором. |
Конструктор
| С | Классы и описания |
|---|---|
| 1 | По умолчанию конструктор |
JsonParser Class - Подборна JSON Strings.
JSonParser - это базовый класс, который определяет контент JSON, используемый публичным API для чтения. Создайте экземпляр, используя заводский метод экземпляра JSONFACTORY.
Объявления классов Ниже приведены объявление класса org.codehaus.jackson.jsonparser:
Public Abstract Class JSonParser Extends Объектные реализации, заключенные, версируют
Вложенные классы
| С | Классы и описания |
|---|---|
| 1 | Статический класс jsonParser.feature // Перечисление определяет все функции анализатора. |
| 2 | Статический класс jsonparser.numbertype // Перечисления могут использоваться для возможных «локальных» (оптимальных) типов чисел. |
Конструктор
| С | Классы и описания |
|---|---|
| 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 (); // "имя": "Mahesh kumarerator.writestripject ();" // ":" Mahesh kumar. Кумар ");Давайте посмотрим на операцию JSongenerator. Создайте файл класса Java с именем Jacksontester в каталоге C:/> jackson_workspace.
Файл: jacksontester.java
Импорт java.io.file; import java.io.ioexception; import java.util.map; import org.codehaus.jackson.jsonencoding; import org.codehaus.jackson.jsonfactory; import org.codehaus.jackson.jsongenerator; import org.codehaus.jackson.jsonpareexception; org.codehaus.jackson.map.jsonmappingException; import org.codehaus.jackson.map.objectmapper; public class jacksontester {public static void main (String args []) {jacksontester tester = new Jacksontester (); try {jsonfactory jasonfactory = new jsonfactory (); Jsongenerator jsongenerator = jasonfactory.createjsongenerator (новый файл ("Student.json"), jsonencoding.utf8); // {jsongenerator.writestartObject (); // "Имя": "Махеш Кумар" jsongenerator.Writestringfield ("имя", "Махеш Кумар"); // «Возраст»: 21 jsongenerator.writeNumberfield («Возраст», 21); // "проверено": false jsongenerator.writebooleanfield ("проверено", false); // "Марки": [100, 90, 85] JSongenerator.WriteFieldName ("Marks"); // [jsongenerator.writestartarray (); // 100, 90, 85 jsongenerator.writeNumber (100); jsongenerator.writeNumber (90); jsongenerator.writeNumber (85); //] jsongenerator.writeendarray (); //} jsongenerator.writeendobject (); jsongenerator.close (); // Результат Student.json // {// «Имя»: «Махеш Кумар», // «Возраст»: 21, // «Проверено»: false, // «Марки»: [100,90,85] //} ObjectMapper mapper = new ObjectMapper (); Map <string, object> dataMap = mapper.readvalue (new File ("study.json"), map.class); System.out.println (dataMap.get ("name")); System.out.println (dataMap.get ("age")); System.out.println (dataMap.get ("проверка")); System.out.println (dataMap.get ("marks")); } catch (jsonparseexception e) {e.printstacktrace (); } catch (jsonmappingException e) {e.printstacktrace (); } catch (ioException e) {e.printstackTrace (); }}}Результаты проверки
Используйте Javac, чтобы составить следующий класс:
Кода -копия выглядит следующим образом:
C:/jackson_workspace> javac jacksontester.java
Теперь запустите Джексонестер, чтобы увидеть результат:
Кода -копия выглядит следующим образом:
C:/jackson_workspace> Java Jacksontester
Проверьте выход
Махеш Кумар21FALSE [100, 90, 85]
Читайте json с помощью jsonparser
Использовать JSonParser очень просто. Сначала создайте jsonParser с использованием метода jsonfactory.createjsonparser () и используйте его метод следующего Token () для чтения каждой строки JSON в качестве тега. Проверьте каждый токен и соответствующий процесс.
Jsonfactory jasonfactory = new jsonfactory (); jjsonparser jsonparser = jasonfactory.createjsonparser (new file ("student.json")); while (jsonparser.nexttoken ()! if ("name" .equals (fieldname)) {// перейти к следующему token jsonparser.nexttoken (); System.out.println (jsonParser.getText ()); }}Давайте посмотрим на деятельность JSonParser. Создайте класс с именем Jacksontester в Java в папке C:/> jackson_workspace.
Файл: jacksontester.java
Импорт java.io.file; импорт java.io.ioexception; import org.codehaus.jackson.jsonencoding; import org.codehaus.jackson.jsonfactory; импорт org.codehaus.jackson.jsongenerator; imporm.codehaus.jackson.jsonparseexception; импорт. org.codehaus.jackson.jsontoken; import org.codehaus.jackson.map.jsonmappingException; открытый класс Jacksontester {public static void main (string args []) {jacksontester tester = new Jacksontester (); try {jsonfactory jasonfactory = new jsonfactory (); Jsongenerator jsongenerator = jasonfactory.createjsongenerator (новый файл ("Student.json"), jsonencoding.utf8); jsongenerator.writestartObject (); jsongenerator.writestringfield («Имя», «Махеш Кумар»); jsongenerator.writeNumberfield («Возраст», 21); jsongenerator.writebooleanfield ("проверено", false); jsongenerator.writefieldname ("Marks"); jsongenerator.writestartarray (); // [jsongenerator.writeNumber (100); jsongenerator.writeNumber (90); jsongenerator.writeNumber (85); jsongenerator.writeendarray (); jsongenerator.writeendobject (); jsongenerator.close (); // Результат Student.json // {// «Имя»: «Махеш Кумар», // «Возраст»: 21, // «Проверено»: false, // «Марки»: [100,90,85] //} jsonparser jsonparser = jasonfactory.createjsonparser (new file ("student.json."); while (jsonparser.nexttoken ()! = jsontoken.end_object) {// Получить текущую строку токена FieldName = jsonParser.getCurrentName (); if ("name" .equals (fieldname)) {// перейти к следующему token jsonparser.nexttoken (); System.out.println (jsonParser.getText ()); } if ("age" .equals (fieldname)) {// перейти к следующему token jsonparser.nexttoken (); System.out.println (jsonParser.getNumberValue ()); } if ("verified" .equals (fieldname)) {// перейти к следующему token jsonparser.nexttoken (); System.out.println (jsonParser.getBooleAnValue ()); } if ("marks" .equals (fieldname)) {// перейти к [jsonparser.nexttoken (); // цикл Till Token, равный "]" while (jsonparser.nexttoken ()! = jsontoken.end_array) {system.out.println (jsonparser.getnumbervalue ()); }}}} catch (jsonparseexception e) {e.printstacktrace (); } catch (jsonmappingException e) {e.printstacktrace (); } catch (ioException e) {e.printstackTrace (); }}}Результаты проверки
Компилируйте javac для компиляции следующих классов:
Кода -копия выглядит следующим образом:
C:/jackson_workspace> javac jacksontester.java
Теперь запустите Jacksontester и посмотрите на результат следующим образом:
Кода -копия выглядит следующим образом:
C:/jackson_workspace> Java Jacksontester
Проверьте выход
Махеш Кумар21FALSE [100, 90, 85]