Первая программа Джексона
Прежде чем ввести детали изучения библиотеки Джексона, давайте посмотрим на функции работы приложения. В этом примере мы создаем класс ученика. Строка JSON будет создана и опустошенная для объекта студента, а затем сериализована на строку JSON.
Создайте файл класса Java с именем jacksontester c:/> jackson_workspace.
Файл: jacksontester.java
import java.io.IOException;import org.codehaus.jackson.JsonParseException;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;import org.codehaus.jackson.map.SerializationConfig;public class JacksonTester { public static void main(String args []) {ObjectMapper mapper = new ObjectMapper (); String jsonstring = "{/" name/":/" mahesh/",/" age/": 21}"; // MAP JSON TO STUDAT TRY {Student = Mapper.readValue (JSonstring, Student.Class); System.out.println (студент); mapper.enable (serializationconfig.feature.indent_output); jsonstring = mapper.writevalueasstring (студент); System.out.println (JSonstring); } catch (jsonparseexception e) {e.printstacktrace (); } catch (jsonmappingException e) {e.printstacktrace (); } catch (ioException e) {e.printstackTrace (); }}} Class Student {private String name; частный int возраст; public Student () {} public String getName () {return name; } public void setName (string name) {this.name = name; } public int getage () {return Age; } public void setage (int age) {this.age = age; } public String toString () {return "Студент [name:"+ name+ ", age:"+ age+ "]"; }}Результаты проверки
Используйте Javac, чтобы составить следующий класс:
Кода -копия выглядит следующим образом:
C:/jackson_workspace> javac jacksontester.java
Теперь запустите Джексонестер, чтобы увидеть результат:
Кода -копия выглядит следующим образом:
C:/jackson_workspace> Java Jacksontester
Проверьте выход
Студент [Имя: Махеш, возраст: 21] {"Имя": "Махеш", "Возраст": 21}Шаги - вот важные шаги, которые нужно рассмотреть здесь.
Шаг 1: Создайте объект ObjectMapper.
Создайте объект ObjectMapper. Это многоразовый объект. /
Кода -копия выглядит следующим образом:
ObjectMapper mapper = new ObjectMapper ();
Шаг 2: Дезериализуйте JSON в объект.
Используйте метод readvalue (), чтобы получить от объекта JSON. Json String/Source передается как параметр json string и тип объекта.
// объект JSON ConversionStudent Student
Шаг 3: Сериализуйте объект на JSON.
Используйте метод writevalueasString (), чтобы получить представление строки JSON объекта.
// объект json conversion jsonstring = mapper.writevalueasstring (студент);
Дерево Джексона
Модель дерева готовит представление дерева памяти файла JSON. ObjectMapper создает дерево узлов jsonNode. Это самый гибкий подход. Это похоже на XML анализатора DOM.
Создать дерево из json
ObjectMapper обеспечивает корневой узел указательного дерева после прочтения JSON. Корневой узел можно использовать для прохождения полного дерева. Рассмотрим следующий фрагмент кода, чтобы получить корневой узел, который обеспечивает строку JSON.
// Создать объект intemptmapper exantyobjectmapper mapper = new ObjectMapper (); String jsonstring = "{/" name/":/" Mahesh Kumar/",/" Age/": 21,/" verified/": false,/" mark/": [100,90,85]}"; // Создание дерева из jsonjsonnode rootnode = mappper.readtree (jsonstring); Модель дерева проходов
Используйте относительные пути к корневому узлу в дереве обхода и обработайте данные для получения каждого узла. Рассмотрим следующий отрыв кода приведенного дерева при предоставленном корневом узле.
Jsonnode namenode = rootnode.path ("name"); System.out.println ("name:"+ namenode.getTextValue ()); Jsonnode marksnode = rootnode.path ("marks"); Iterator iterator = marksnode.getelements ();Пример создает файловый каталог с именем Jacksontester в Java Class C:/> jackson_workspace.
Файл: jacksontester.java
Импорт java.io.ioexception; import java.util.iterator; import org.codehaus.jackson.jsonnode; import org.codehaus.jackson.jsonparseexception; import org.codehaus.jackson.map.jsonmappeexception; импорт org.codehaus.jachson.map.objectmapper; args []) {jacksontester tester = new Jacksontester (); try {objectmapper mapper = new ObjectMapper (); String jsonstring = "{/" name/":/" Mahesh Kumar/",/" age/": 21,/" verified/": false,/" marks/": [100,90,85]}"; Jsonnode rootnode = mappper.readtree (jsonstring); Jsonnode namenode = rootnode.path ("name"); System.out.println ("name:"+ namenode.getTextValue ()); Jsonnode agenode = rootnode.path ("age"); System.out.println ("age:" + agenode.getIntValue ()); Jsonnode veserifiednode = rootnode.path ("verified"); System.out.println ("verified:" + (verifiednode.getbooleanvalue ()? "Да": "Нет")); Jsonnode marksnode = rootnode.path ("marks"); Iterator <jsonnode> iterator = marksnode.getelements (); System.out.print ("Marks: ["); while (iterator.hasnext ()) {jsonnode marks = iterator.next (); System.out.print (marks.getIntValue () + ""); } System.out.println ("]"); } 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
Проверьте выход
Название: Махеш Кумараге: 21Verified: Nomarks: [100 90 85]
Трево в JSON CUNVERSION
В этом примере мы использовали jsonnode, записали его в файл JSON и читаем обратно для создания дерева.
Создайте каталог под названием Jacksontester в файле класса Java C:/> jackson_workspace.
Файл: jacksontester.java
Импорт java.io.file; импорт java.io.ioexception; import java.util.iterator; import org.codehaus.jackson.jsonnode; импорт org.codehaus.jackson.jsonparseexception; импорт org.codehaus.jackson.map.jsonmappingException; import org.codehaus.mapperceper.mappersmaper. org.codehaus.jackson.node.arraynode; import org.codehaus.jackson.node.objectnode; открытый класс jacksontester {public static void main (string args []) {jacksontester tester = new Jacksontester (); try {objectmapper mapper = new ObjectMapper (); Jsonnode rootnode = mapper.createObjectNode (); Jsonnode marksnode = mapper.createarrayNode (); ((ArrayNode) MarksNode) .Add (100); ((ArrayNode) MarksNode) .Add (90); ((ArrayNode) MarksNode) .Add (85); ((ObjectNode) rootNode) .put ("name", "Mahesh Kumar"); ((ObjectNode) rootNode) .put («Возраст», 21); ((ObjectNode) rootNode) .put ("проверка", false); ((ObjectNode) rootNode) .put ("Marks", MarkSnode); mapper.writevalue (new File ("Student.json"), RootNode); rootnode = mapper.readtree (new File ("Student.json")); Jsonnode namenode = rootnode.path ("name"); System.out.println ("name:"+ namenode.getTextValue ()); Jsonnode agenode = rootnode.path ("age"); System.out.println ("age:" + agenode.getIntValue ()); Jsonnode veserifiednode = rootnode.path ("verified"); System.out.println ("verified:" + (verifiednode.getbooleanvalue ()? "Да": "Нет")); Jsonnode marksnode1 = rootnode.path ("marks"); Iterator <jsonnode> iterator = marksnode1.getelements (); System.out.print ("Marks: ["); while (iterator.hasnext ()) {jsonnode marks = iterator.next (); System.out.print (marks.getIntValue () + ""); } System.out.println ("]"); } 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
Проверьте выход
Имя: Махеш Кумар
Возраст: 21
Проверено: нет
Знаки: [100 90 85]
Преобразование из дерева в Java -объект
В этом примере мы использовали jsonnode и записали его в файл JSON и прочитали обратно, а затем преобразовали студенческий объект для создания дерева.
Создайте каталог под названием Jacksontester в файле класса Java C:/> jackson_workspace.
Файл: jacksontester.java
Импорт java.io.file; импорт java.io.ioexception; import java.util.arrays; импорт org.codehaus.jackson.jsonnode; импорт org.codehaus.jackson.jsonparseexception; импорт org.codehaus.jackson.map.jsonmappingExcect org.codehaus.jackson.node.arraynode; import org.codehaus.jackson.node.objectnode; открытый класс jacksontester {public static void main (string args []) {jacksontester tester = new Jacksontester (); try {objectmapper mapper = new ObjectMapper (); Jsonnode rootnode = mapper.createObjectNode (); Jsonnode marksnode = mapper.createarrayNode (); ((ArrayNode) MarksNode) .Add (100); ((ArrayNode) MarksNode) .Add (90); ((ArrayNode) MarksNode) .Add (85); ((ObjectNode) rootNode) .put ("name", "Mahesh Kumar"); ((ObjectNode) rootNode) .put («Возраст», 21); ((ObjectNode) rootNode) .put ("проверка", false); ((ObjectNode) rootNode) .put ("Marks", MarkSnode); mapper.writevalue (new File ("Student.json"), RootNode); rootnode = mapper.readtree (new File ("Student.json")); Студент Студент = Mapper.Treetavaule (rootNode, Student.Class); System.out.println ("name:"+ study.getName ()); System.out.println («Возраст:» + student.getage ()); System.out.println ("Verified:" + (Student.IsVerified ()? "Да": "Нет")); System.out.println ("Marks:"+Arrays.tostring (student.getmarks ())); } catch (jsonparseexception e) {e.printstacktrace (); } catch (jsonmappingException e) {e.printstacktrace (); } catch (ioException e) {e.printstackTrace (); }}} класс Студент {String name; int возраст; логическое подтверждение; int [] отметки; public String getName () {return name; } public void setName (string name) {this.name = name; } public int getage () {return Age; } public void setage (int age) {this.age = age; } public boolean isVerifified () {return verified; } public void setVerified (boolean verified) {this.Verified = verified; } public int [] getMarks () {return Marks; } public void setMarks (int [] marks) {this.marks = marks; }}Результаты проверки
Используйте Javac, чтобы составить следующий класс:
Кода -копия выглядит следующим образом:
C:/jackson_workspace> javac jacksontester.java
Теперь запустите Джексонестер, чтобы увидеть результат:
Кода -копия выглядит следующим образом:
C:/jackson_workspace> Java Jacksontester
Проверьте выход
Название: Махеш Кумараге: 21Verified: Nomarks: [100 90 85]