1. Memulai
Ada kelas ObjectMapper di Jackson yang sangat praktis, digunakan untuk pertukaran objek Java dan JSON.
1. Java Object to JSON [Serialisasi JSON]
impor java.io.ioException; impor java.text.parseexception; impor java.text.simpledateFormat; impor com.fasterxml.jackson.databind.objectmapper; Public Class JacksondeMo {public static void main (string [] args) melempar parseException, ioException {user user = new user (); user.setname ("xiaomin"); user.setemail ("[email protected]"); user.setage (20); SimpleDateFormat DateFormat = new SimpleDateFormat ("yyyy-mm-dd"); user.setBirthday (dateFormat.parse ("1996-10-01")); /*** ObjectMapper adalah inti dari operasi JSON, dan semua operasi JSON Jackson diimplementasikan di ObjectMapper. * ObjectMapper memiliki beberapa metode serialisasi JSON, yang dapat menyimpan string JSON di media yang berbeda seperti file, outputstream, dll. * Writevalue (file arg0, objek arg1) mengubah arg1 menjadi urutan json dan menyimpannya ke file arg0. * writevalue (outputStream arg0, objek arg1) mengubah arg1 menjadi urutan json dan menyimpannya ke aliran output arg0. * writevalueasbytes (objek arg0) mengubah arg0 menjadi urutan json dan mengeluarkan hasilnya menjadi array byte. * WriteValueAsstring (objek arg0) mengubah arg0 menjadi urutan JSON dan mengeluarkan hasilnya menjadi string. */ ObjectMapper mapper = new ObjectMapper (); // Kelas Pengguna ke JSON // Hasil Output: {"Name": "Xiaomin", "Age": 20, "Ulang Tahun": 844099200000, "Email": "[email protected]"} String json = mapper.writevalueasstring (pengguna); System.out.println (JSON); // Koleksi Java ke JSON // hasil output: [{"name": "Xiaomin", "Age": 20, "Birthday": 844099200000, "Email": "[email protected]"}] Daftar <User> Users = New ArrayList <User> (); Users.add (pengguna); String jsonlist = mapper.writevalueAsstring (pengguna); System.out.println (JSonList); }}2.JSON ke Kelas Java [Deserialisasi JSON]
impor java.io.ioException; impor java.text.parseexception; impor com.fasterxml.jackson.databind.objectmapper; Public Class Jacksondemo {public static void main (string [] args) melempar parseException, ioException {string json = "{/"name/":/"xiaomin/",/"age/"1mail/"birthday/":84099200000,"mail/"birthday/"xia / ** * ObjectMapper mendukung deserialisasi JSON dari byte [], file, inputstream, string, dll. */ ObjectMapper mapper = new ObjectMapper (); Pengguna pengguna = mapper.readValue (json, user.class); System.out.println (pengguna); }}
2. Jackson mendukung 3 metode penggunaan:
1. Ikatan Data: Yang paling nyaman digunakan.
(1) Ikatan data lengkap:
Private Static Final String Model_BINDING = "{/" name/":/" name1/",/" type/": 1}"; public void fullDatabinding () melempar Exception {ObjectMapper mapper = new ObjectMapper (); Model user = mapper.readValue (model_binding, model.class); // readValue ke kelas entitas. System.out.println (user.getName ()); System.out.println (user.getType ()); }Kelas Model:
Private Static Class Model {Private String Name; tipe int pribadi; public string getName () {return name; } public void setName (name string) {this.name = name; } public int getType () {type return; } public void setType (int tipe) {this.type = type; }}(2) Ikatan data mentah:
/ ** Tipe Java beton yang akan digunakan Jackson untuk pengikatan data sederhana adalah: JSON tipe Java tipe objek LinkedHashMap <String, Object> Array ArrayList <PERBICARA> Nomor String String (Tidak Ada Fraksi) Integer, Long atau Biginteger (Second Terjadi) Nomor NOLADA (NOMLEAD) DOUSE (NOMOUD NOMOUD) DOURLABER UNTUK MENGUNGKAP Exception {ObjectMapper mapper = new ObjectMapper (); HashMap Map = mapper.readValue (model_binding, hashmap.class); // readValue ke tipe data primitif. System.out.println (map.get ("name")); System.out.println (Map.get ("Type")); }(3) Ikatan Data Generik:
Private Static Final String generic_binding = "{/" key1/": {/" name/":/" name2/",/" type/": 2},/" key2/": {/" name/":/" name3/",/" type/": 3}}"; public void genericdatabinding () melempar Exception {ObjectMapper mapper = new ObjectMapper (); HashMap <String, Model> ModelMap = mapper.readValue (generic_binding, tipe -baru <hashmap <string, model >> () {}); // readValue menjadi data paradigma. Model model = modelmap.get ("key2"); System.out.println (model.getName ()); System.out.println (Model.GetType ()); }2. Model Pohon: Yang paling fleksibel.
Private Static Final String Tree_Model_BINDING = "{/" Treekey1/":/" TreEvalue1/",/" Treekey2/":/" Treevalue2/",/" Children/": [{/" Childkey1/":/" Childkey1/"}]}"; public void treemoDelBinding () melempar Exception {ObjectMapper mapper = new ObjectMapper (); JSonnode rootNode = mapper.readtree (Tree_Model_Binding); // Path dan dapatkan fungsi yang sama seperti GET, tetapi ketika simpul tidak dapat ditemukan, ia mengembalikan simpul yang hilang, bukan nol. String treeKey2Value = rootnode.path ("treeKey2"). GetTextValue (); // System.out.println ("Treekey2Value:" + Treekey2Value); JSonnode childrenNode = rootnode.path ("anak -anak"); String childkey1value = childrennode.get (0) .path ("childKey1"). GetTextValue (); System.out.println ("ChildKey1Value:"+ChildKey1Value); // Buat node root node ObjectNode root = mapper.CreateObjectNode (); // Buat anak node1 objectNode node1 = mapper.createObjectNode (); node1.put ("nodeKey1", 1); node1.put ("nodeKey2", 2); // BIND NODE ANAK 1 root.put ("anak", node1); // arraynode arraynode = mapper.createarraynode (); arraynode.add (node1); arraynode.add (1); // ikat node array root.put ("arraynode", arraynode); // JSON membaca simpul pohon jSonnode valuetotreenode = mappper.valuetotree (Tree_Model_Binding); // bind json node root.put ("valuetotreenode", valuetotreenode); // Bind The JSON Node Object JSonnode bindJSonnode = mappper.readValue (generic_binding, jsonnode.class); // Bind JSON ke objek Node JSON. // bind json node root.put ("bindJsonnode", bindjsonnode); System.out.println (mapper.writevalueAsstring (root)); } 3. Streaming API: Kinerja terbaik.
Untuk program dengan persyaratan kinerja tinggi, disarankan untuk menggunakan API streaming. Kalau tidak, menggunakan metode lain, apakah itu untuk membuat jsongenerator atau jsonparser, jsonFactory digunakan.
paket com.jingshou.jackson; impor java.io.file; impor java.io.ioException; impor com.fasterxml.jackson.core.jsonencoding; impor com.fasterxml.jackson.core.jsonfactory; impor com.fasterxml.jackson.core.jsongenerator; impor com.fasterxml.jackson.core.jsonparser; impor com.fasterxml.jackson.core.jsontoken; kelas publik jacksontest6 {public static void main (string [] args) melempar ioException {jsonfactory jfactory = new jsonfactory (); /*** Tulis ke file ***/jsongenerator jgenerator = jfactory.createGenerator (file baru ("c: //user.json"), jsonencoding.utf8); jgenerator.writestArtObject (); // {jgenerator.writeStringField ("name", "mkyong"); // "Nama": "mkyong" jgenerator.writenumberfield ("usia", 29); // "Umur": 29 Jgenerator.WriteFieldName ("Pesan"); // "pesan": jgenerator.writestArtArray (); // [jgenerator.writeString ("msg 1"); // "msg 1" jgenerator.writeString ("msg 2"); // "msg 2" jgenerator.writeString ("msg 3"); // "msg 3" jgenerator.writeDarray (); //] jgenerator.writeendObject (); //} jgenerator.close (); /*** Baca dari File ***/JsonParser jparser = jfactory.createParser (file baru ("c: //user.json")); // loop sampai token sama dengan "}" while (jparser.nextToken ()! = jsontoken.end_object) {string fieldname = jparser.getCurrentName (); if ("name" .equals (fieldName)) {// token saat ini adalah "name", // pindah ke berikutnya, yang merupakan "name" nilai jparser.nexttoken (); System.out.println (jparser.getText ()); // tampilkan mkyong} if ("usia" .Equals (fieldName)) {// token saat ini adalah "usia", // pindah ke Next, yang merupakan nilai "nama" jparser.nexttoken (); System.out.println (jparser.getIntValue ()); // tampilkan 29} if ("pesan" .equals (fieldName)) {jparser.nextToken (); // token saat ini adalah "[", pindahkan pesan berikutnya // adalah array, loop sampai token sama dengan "]" while (jparser.nextToken ()! = jsontoken.end_array) {// tampilkan msg1, msg2, msg3 system.out.println (jparser.gettext ()); }}} jparser.close (); }}