


Penjelasan terperinci tentang cara menggunakan kemahiran JSONObject_javascript
1.Pengenalan JSONObject
Pakej JSONObject-lib ialah pakej untuk menukar kacang, koleksi, peta, tatasusunan java dan xml kepada JSON.
2. Muat turun pakej balang
http://files.cnblogs.com/java-pan/lib.rar
Menyediakan 6 pakej balang lain yang bergantung pada balang JSONObject, sejumlah 7 fail balang
Nota: Oleh kerana versi yang digunakan dalam projek di tempat kerja ialah 1.1, yang sepadan dengan versi jdk1.3, blog ini adalah berdasarkan versi 1.1.
Laluan muat turun javadoc yang sepadan dengan versi ini adalah seperti berikut: http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-1.1/
Versi terkini ialah 2.4 Alamat muat turun untuk versi lain ialah http://sourceforge.net/projects/json-lib/files/json-lib/
3. Persekitaran projek:
sistem: WIN7 myeclipse: 6.5 tomcat: 5.0 JDK: kedua-dua persekitaran pembangunan dan kompilasi menggunakan 1.5
Struktur projek adalah seperti berikut:
Nota: Fail yang digunakan kali ini hanyalah kelas JSONObject_1_3 dan note.txt di bawah pakej json dalam direktori projek
4.class&method API berdasarkan 1.1
Buat perjanjian berikut:
1. Memperkenalkan API berdasarkan JSONObject 1.1
2. Hanya memperkenalkan kelas dan kaedah yang biasa digunakan
3. Tidak lagi diperkenalkan Versi ini tidak lagi disyorkan
4. Kelas dan kaedah yang diperkenalkan terutamanya tertumpu pada yang digunakan dalam blog ini
JSONObject:A JSONObject is an unordered collection of name/value pairs.
Kaedah pembinaan adalah seperti berikut:
JSONObject(); Cipta objek JSONObject kosongJSONObject(boolean isNull); Cipta objek JSONObject sama ada ia kosong
Kaedah biasa adalah seperti berikut:
fromBean(Kaedah statik), mencipta objek JSONObject melalui objek pojodariJSONObject(objek JSONObject); kaedah statik, membina objek JSONObject melalui objek JSONObject yang lain
dariJSONString(JSONString rentetan); kaedah Statik, mencipta objek JSONObject melalui JSONString
toString(); Tukar objek JSONObject kepada rentetan format json
iterator(); mengembalikan objek Iterator untuk melintasi elemen
Seterusnya beberapa kaedah put/get Kaedah get biasa dan kaedah periuk perlu dititikberatkan seperti ini:
Kaedah get mengembalikan nilai jika seseorang boleh ditemui dan membuang pengecualian jika kaedah opt mengembalikan nilai lalai dan bukannya membuang pengecualian, dan begitu juga berguna untuk mendapatkan nilai pilihan.
JSONArray:JSONArray ialah jujukan nilai tersusun.
ialah kelas akhir, mewarisi Objek dan melaksanakan antara muka JSON
Kaedah pembinaan adalah seperti berikut:
JSONArray(); membina objek JSONArray kosong
Kaedah biasa adalah seperti berikut:
fromArray(Objek[] tatasusunan); membuat objek JSONArray melalui tatasusunan javafromCollection(Koleksi koleksi); kaedah statik, mencipta objek JSONArray melalui objek koleksi
fromString(String rentetan); membina objek JSONArray daripada rentetan format json
kepadaString(); Tukar objek JSONArray kepada rentetan format json
iterator(); mengembalikan objek Iterator untuk melintasi elemen
Langkah seterusnya ialah kaedah put/get...
XMLSerializer:Kelas utiliti untuk menukar JSON kepada XML sebagai belakang.
Kelas yang mewarisi daripada Objek
Kaedah pembinaan adalah seperti berikut:
XMLSerializer(); Cipta objek XMLSerializer
Kaedah biasa adalah seperti berikut:
setRootName(String rootName); Tetapkan nama elemen akar bagi xml yang ditukarsetTypeHintsEnabled(boolean typeHintsEnabled);
write(JSON json); Tukar objek json kepada xml Pengekodan aksara lalai ialah UTF-8,
Jika anda perlu menetapkan pengekodan, anda boleh menggunakan write(JSON json, Pengekodan rentetan)
5. Contoh mudah untuk setiap lajur rentetan XML dan JSON
{"password":"123456","username":"张三"}
<?xml version="1.0" encoding="UTF-8"?> <user_info> <password>123456</password> <username>张三</username> </user_info>
Buat projek web baharu dengan nama projek JS dan import 7 pakej balang berikut Fail dimuat turun dari laluan dalam persediaan sebelumnya.
Nota: Anda tidak perlu membuat projek web baharu Projek java biasa juga boleh menyelesaikan operasi dalam artikel ini. Mengenai mengapa saya perlu mengimport 6 pakej lain selain pakej json, saya akan menyiarkan note.txt di penghujung supaya anda boleh tahu dengan pantas.
soalan1: Bagaimana untuk memproses rentetan format json yang diterima daripada bahagian hadapan di latar belakang?
question2:后台是怎么拼装json格式的字符串?
public static void javaToJSON() { System.out.println("java代码封装为json字符串"); JSONObject jsonObj = new JSONObject(); jsonObj.put("username", "张三"); jsonObj.put("password", ""); System.out.println("java--->json \n" + jsonObj.toString()); }
question3:json格式的字符串怎么转换为xml格式的字符串?
public static void jsonToXML() { System.out.println("json字符串转xml字符串"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}"; JSONObject json = JSONObject.fromString(jsonStr); XMLSerializer xmlSerializer = new XMLSerializer(); xmlSerializer.setRootName("user_info"); xmlSerializer.setTypeHintsEnabled(false); String xml = xmlSerializer.write(json); System.out.println("json--->xml \n" + xml); }
question4:xml格式的字符串怎么转换为json格式的字符串?
public static void xmlToJSON(){ System.out.println("xml字符串转json字符串"); String xml = "<?xml version=\".\" encoding=\"UTF-\"?><user_info><password></password><username>张三</username></user_info>"; JSON json=XMLSerializer.read(xml); System.out.println("xml--->json \n"+json.toString()); }
question5:javabean怎么转换为json字符串?
public static void javaBeanToJSON() { System.out.println("javabean转json字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("张三"); userInfo.setPassword(""); JSONObject json = JSONObject.fromBean(userInfo); System.out.println("javabean--->json \n" + json.toString()); }
question6:javabean怎么转换为xml字符串?
public static void javaBeanToXML() { System.out.println("javabean转xml字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("张三"); userInfo.setPassword(""); JSONObject json = JSONObject.fromBean(userInfo); XMLSerializer xmlSerializer = new XMLSerializer(); String xml = xmlSerializer.write(json, "UTF-"); System.out.println("javabean--->xml \n" + xml); }
完整的JSONObject_1_3.java代码如下:
JSONObject_1_3 package json; import net.sf.json.JSON; import net.sf.json.JSONObject; import net.sf.json.xml.XMLSerializer; public class JSONObject__ { public static void javaToJSON() { System.out.println("java代码封装为json字符串"); JSONObject jsonObj = new JSONObject(); jsonObj.put("username", "张三"); jsonObj.put("password", ""); System.out.println("java--->json \n" + jsonObj.toString()); } public static void jsonToJAVA() { System.out.println("json字符串转java代码"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}"; JSONObject jsonObj = JSONObject.fromString(jsonStr); String username = jsonObj.getString("username"); String password = jsonObj.optString("password"); System.out.println("json--->java\n username=" + username + "\t password=" + password); } public static void jsonToXML() { System.out.println("json字符串转xml字符串"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}"; JSONObject json = JSONObject.fromString(jsonStr); XMLSerializer xmlSerializer = new XMLSerializer(); xmlSerializer.setRootName("user_info"); xmlSerializer.setTypeHintsEnabled(false); String xml = xmlSerializer.write(json); System.out.println("json--->xml \n" + xml); } public static void javaBeanToJSON() { System.out.println("javabean转json字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("张三"); userInfo.setPassword(""); JSONObject json = JSONObject.fromBean(userInfo); System.out.println("javabean--->json \n" + json.toString()); } public static void javaBeanToXML() { System.out.println("javabean转xml字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("张三"); userInfo.setPassword(""); JSONObject json = JSONObject.fromBean(userInfo); XMLSerializer xmlSerializer = new XMLSerializer(); String xml = xmlSerializer.write(json, "UTF-"); System.out.println("javabean--->xml \n" + xml); } public static void xmlToJSON(){ System.out.println("xml字符串转json字符串"); String xml = "<?xml version=\".\" encoding=\"UTF-\"?>"; JSON json=XMLSerializer.read(xml); System.out.println("xml--->json \n"+json.toString()); } public static void main(String args[]) { // javaToJSON(); // jsonToJAVA(); // jsonToXML(); // javaBeanToJSON(); // javaBeanToXML(); xmlToJSON(); } } 张三
完整的UserInfo.java代码如下:
UserInfo package json; public class UserInfo { public String username; public String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
result
代码和运行结果都已经贴在每个问题的后面,运行时直接用main方法分别对每个方法运行即可看到测试效果。
note.txt是报的对应的错误及解决方法,也从另一个方面说明为什么需要导入前面提到的jar包;
note.txt文件内容如下:
java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:537) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at generate.TestJSONObject.main(TestJSONObject.java:40) Exception in thread "main"
解决方案:导入commons-lang-2.1.jar
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at net.sf.json.JSONObject.<clinit>(JSONObject.java:125) at generate.TestJSONObject.main(TestJSONObject.java:40) Exception in thread "main"
解决方案:导入commons-logging.jar
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean at net.sf.json.JSONObject.set(JSONObject.java:2164) at net.sf.json.JSONObject.put(JSONObject.java:1853) at net.sf.json.JSONObject.put(JSONObject.java:1806) at generate.TestJSONObject.main(TestJSONObject.java:41) Exception in thread "main"
解决方案:导入commons-beanutils.jar
java.lang.NoClassDefFoundError: net/sf/ezmorph/MorpherRegistry at net.sf.json.util.JSONUtils.<clinit>(JSONUtils.java:65) at net.sf.json.JSONObject.set(JSONObject.java:2164) at net.sf.json.JSONObject.put(JSONObject.java:1853) at net.sf.json.JSONObject.put(JSONObject.java:1806) at generate.TestJSONObject.main(TestJSONObject.java:41) Exception in thread "main"
解决方案:导入ezmorph-1.0.2.jar
java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap at org.apache.commons.beanutils.PropertyUtils.<clinit>(PropertyUtils.java:208) at net.sf.json.JSONObject.fromBean(JSONObject.java:190) at net.sf.json.JSONObject.fromObject(JSONObject.java:437) at net.sf.json.JSONObject.set(JSONObject.java:2196) at net.sf.json.JSONObject.put(JSONObject.java:1853) at net.sf.json.JSONObject.put(JSONObject.java:1806) at generate.TestJSONObject.main(TestJSONObject.java:41) Exception in thread "main"
解决方案:导入commons-collections-3.0.jar
Exception in thread "main" java.lang.NoClassDefFoundError: nu/xom/Serializer at generate.TestJSONObject.jsonToXML(TestJSONObject.java:88) at generate.TestJSONObject.main(TestJSONObject.java:96)
解决方案:导入xom-1.0d10.jar
几点说明:
1.注意UserInfo类的修饰符,用public修饰,变量username和password也用public修饰,最好单独的写一个类,这里就不贴出来了
2.以上json字符串和xml字符串都是最简单的形式,实际开发中json字符串和xml格式比这个复杂的多,
处理复杂的json字符串,可以封装写一个类继承HashMap,然后重写其put和get方法,以支持对类型为A[0].B及A.B的键值的读取和指定
3.以上6中情况在实际开发中可能有些不存在或不常用
存在的问题:
1.使用XMLSerializer的write方法生成的xml字符串的中文乱码问题
2.question4中的红色的log日志问题
以上内容是小编给大家介绍的JSONObject使用方法详解,希望大家喜欢。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.
