最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JSONObject使用方法詳解

 更新時(shí)間:2015年12月17日 16:19:45   投稿:mrr  
JSONObject-lib包是一個(gè)beans,collections,maps,java arrays和xml和JSON互相轉(zhuǎn)換的包,本文給大家介紹jsonobject使用方法相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧

1.JSONObject介紹

JSONObject-lib包是一個(gè)beans,collections,maps,java arrays和xml和JSON互相轉(zhuǎn)換的包。

2.下載jar包

http://xiazai.jb51.net/201707/yuanma/lib_jb51.rar

提供了除JSONObject的jar之外依賴的其他6個(gè)jar包,一共7個(gè)jar文件

說明:因?yàn)楣ぷ髦许?xiàng)目用到的版本是1.1的對(duì)應(yīng)jdk1.3的版本,故本篇博客是基于1.1版本介紹的。

對(duì)應(yīng)此版本的javadoc下載路徑如下:http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-1.1/

目前最新的版本為2.4,其他版本下載地址為http://sourceforge.net/projects/json-lib/files/json-lib/

3.項(xiàng)目環(huán)境:

system:WIN7 myeclipse:6.5 tomcat:5.0 JDK:開發(fā)環(huán)境和編譯用的都是1.5

項(xiàng)目結(jié)構(gòu)如下:

 

說明:本次用到的的文件只有工程目錄json包下的JSONObject_1_3類和note.txt

4.class&method 基于1.1的API

做以下幾點(diǎn)約定:

1.介紹基于JSONObject 1.1的API

2.只介紹常用的類和方法

3.不再介紹此版本中已經(jīng)不再推薦使用

4.介紹的類和方法主要圍繞本篇博客中用到的

JSONObject:A JSONObject is an unordered collection of name/value pairs.

是一個(gè)final類,繼承了Object,實(shí)現(xiàn)了JSON接口

構(gòu)造方法如下:

JSONObject();創(chuàng)建一個(gè)空的JSONObject對(duì)象

JSONObject(boolean isNull);創(chuàng)建一個(gè)是否為空的JSONObject對(duì)象

普通方法如下:

fromBean(Object bean);靜態(tài)方法,通過一個(gè)pojo對(duì)象創(chuàng)建一個(gè)JSONObject對(duì)象

fromJSONObject(JSONObject object);靜態(tài)方法,通過另外一個(gè)JSONObject對(duì)象構(gòu)造一個(gè)JSONObject對(duì)象

fromJSONString(JSONString string);靜態(tài)方法,通過一個(gè)JSONString創(chuàng)建一個(gè)JSONObject對(duì)象

toString();把JSONObject對(duì)象轉(zhuǎn)換為json格式的字符串

iterator();返回一個(gè)Iterator對(duì)象來遍歷元素

接下來就是一些put/get方法,需要普通的get方法和pot方法做一下強(qiáng)調(diào)說明,API中是這樣描述的:

A get method returns a value if one can be found, and throws an exception if one cannot be found. An opt method returns a default value instead of throwing an exception, and so is useful for obtaining optional values.

 

JSONArray:A JSONArray is an ordered sequence of values.

是一個(gè)final類,繼承了Object,實(shí)現(xiàn)了JSON接口

構(gòu)造方法如下:

JSONArray();構(gòu)造一個(gè)空的JSONArray對(duì)象

普通方法如下:

fromArray(Object[] array);靜態(tài)方法,通過一個(gè)java數(shù)組創(chuàng)建一個(gè)JSONArray對(duì)象

fromCollection(Collection collection);靜態(tài)方法,通過collection集合對(duì)象創(chuàng)建一個(gè)JSONArray對(duì)象

fromString(String string);靜態(tài)方法,通過一個(gè)json格式的字符串構(gòu)造一個(gè)JSONArray對(duì)象

toString();把JSONArray對(duì)象轉(zhuǎn)換為json格式的字符串

iterator();返回一個(gè)Iterator對(duì)象來遍歷元素

接下來同樣是put/get方法……

 XMLSerializer:Utility class for transforming JSON to XML an back.

一個(gè)繼承自O(shè)bject的類

構(gòu)造方法如下:

XMLSerializer();創(chuàng)建一個(gè)XMLSerializer對(duì)象

普通方法如下:

setRootName(String rootName);設(shè)置轉(zhuǎn)換的xml的根元素名稱

setTypeHintsEnabled(boolean typeHintsEnabled);設(shè)置每個(gè)元素是否顯示type屬性

write(JSON json);把json對(duì)象轉(zhuǎn)換為xml,默認(rèn)的字符編碼是UTF-8,

需要設(shè)置編碼可以用write(JSON json, String encoding)

5.對(duì)XML和JSON字符串各列一個(gè)簡單的例子

JSON:

{"password":"123456","username":"張三"}

xml

<?xml version="1.0" encoding="UTF-8"?> 
<user_info>
<password>123456</password>
<username>張三</username>
</user_info>

start

新建web工程,工程名稱JS,導(dǎo)入以下7個(gè)jar包,文件在前面的準(zhǔn)備工作中下載路徑。

說明:可以不用新建web工程,普通的java工程也可以完成本篇的的操作。至于為什么要導(dǎo)入處json包以外的其他6個(gè)包,我會(huì)把note.txt貼在最后,各位一看便知。

question1:后臺(tái)接受到前臺(tái)的json格式的字符串怎么處理?

 public static void jsonToJAVA() {
 System.out.println("json字符串轉(zhuǎn)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);
 }

question2:后臺(tái)是怎么拼裝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格式的字符串怎么轉(zhuǎn)換為xml格式的字符串?

 public static void jsonToXML() {
 System.out.println("json字符串轉(zhuǎn)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格式的字符串怎么轉(zhuǎn)換為json格式的字符串?

public static void xmlToJSON(){
 System.out.println("xml字符串轉(zhuǎn)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怎么轉(zhuǎn)換為json字符串?

public static void javaBeanToJSON() {
 System.out.println("javabean轉(zhuǎn)json字符串");
 UserInfo userInfo = new UserInfo();
 userInfo.setUsername("張三");
 userInfo.setPassword("");
 JSONObject json = JSONObject.fromBean(userInfo);
 System.out.println("javabean--->json \n" + json.toString());
 }

 

question6:javabean怎么轉(zhuǎn)換為xml字符串?

public static void javaBeanToXML() {
 System.out.println("javabean轉(zhuǎn)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字符串轉(zhuǎn)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字符串轉(zhuǎn)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轉(zhuǎn)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轉(zhuǎn)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字符串轉(zhuǎn)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());
 }
 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

代碼和運(yùn)行結(jié)果都已經(jīng)貼在每個(gè)問題的后面,運(yùn)行時(shí)直接用main方法分別對(duì)每個(gè)方法運(yùn)行即可看到測試效果。

note.txt是報(bào)的對(duì)應(yīng)的錯(cuò)誤及解決方法,也從另一個(gè)方面說明為什么需要導(dǎo)入前面提到的jar包;

note.txt文件內(nèi)容如下:

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" 

解決方案:導(dǎo)入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" 

解決方案:導(dǎo)入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" 

解決方案:導(dǎo)入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" 

解決方案:導(dǎo)入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" 

解決方案:導(dǎo)入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) 

解決方案:導(dǎo)入xom-1.0d10.jar

幾點(diǎn)說明:

1.注意UserInfo類的修飾符,用public修飾,變量username和password也用public修飾,最好單獨(dú)的寫一個(gè)類,這里就不貼出來了

2.以上json字符串和xml字符串都是最簡單的形式,實(shí)際開發(fā)中json字符串和xml格式比這個(gè)復(fù)雜的多,

處理復(fù)雜的json字符串,可以封裝寫一個(gè)類繼承HashMap,然后重寫其put和get方法,以支持對(duì)類型為A[0].B及A.B的鍵值的讀取和指定

3.以上6中情況在實(shí)際開發(fā)中可能有些不存在或不常用

存在的問題:

1.使用XMLSerializer的write方法生成的xml字符串的中文亂碼問題

2.question4中的紅色的log日志問題

以上內(nèi)容是小編給大家介紹的JSONObject使用方法詳解,希望大家喜歡。

相關(guān)文章

  • js調(diào)試系列 斷點(diǎn)與動(dòng)態(tài)調(diào)試[基礎(chǔ)篇]

    js調(diào)試系列 斷點(diǎn)與動(dòng)態(tài)調(diào)試[基礎(chǔ)篇]

    上幾篇文章已經(jīng)為大家介紹了js調(diào)試系列的一些基礎(chǔ)知識(shí),支持亂碼兄弟為大家?guī)砹薺s斷點(diǎn)與動(dòng)態(tài)調(diào)試方法,需要的朋友可以參考下
    2014-06-06
  • 利用bootstrapValidator驗(yàn)證UEditor

    利用bootstrapValidator驗(yàn)證UEditor

    這篇文章主要為大家詳細(xì)介紹了利用bootstrapValidator驗(yàn)證UEditor,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • JavaScript中強(qiáng)大的操作符使用詳解

    JavaScript中強(qiáng)大的操作符使用詳解

    JavaScript?為我們提供了很多操作符,用于操作表達(dá)式。下面就來盤點(diǎn)一下?JavaScript?中那些強(qiáng)大的操作符,感興趣的小伙伴可以了解一下
    2022-09-09
  • 一文讀懂微信小程序頁面導(dǎo)航

    一文讀懂微信小程序頁面導(dǎo)航

    微信小程序是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于如何通過一文讀懂微信小程序頁面導(dǎo)航的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 全面了解JavaScript對(duì)象進(jìn)階

    全面了解JavaScript對(duì)象進(jìn)階

    下面小編就為大家?guī)硪黄媪私釰avaScript對(duì)象進(jìn)階。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • axios params 和 data 的區(qū)別小結(jié)

    axios params 和 data 的區(qū)別小結(jié)

    本文介紹了在前端開發(fā)中使用Axios發(fā)送HTTP請(qǐng)求時(shí),params和data的區(qū)別及其應(yīng)用場景,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • 微信小程序判斷用戶是否需要再次授權(quán)獲取個(gè)人信息

    微信小程序判斷用戶是否需要再次授權(quán)獲取個(gè)人信息

    這篇文章主要介紹了微信小程序判斷用戶是否需要再次授權(quán)獲取個(gè)人信息,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • JavaScript中Function與Object的關(guān)系

    JavaScript中Function與Object的關(guān)系

    本文主要介紹了JavaScript中Function與Object的關(guān)系,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • JavaScrip單線程引擎工作原理分析

    JavaScrip單線程引擎工作原理分析

    從基礎(chǔ)的層面來講,理解JavaScript的定時(shí)器是如何工作的是非常重要的,文章通過講解JavaScript的單線程引擎,從而讓讀者更加深入的了解JavaScript定時(shí)器。
    2010-09-09
  • JavaScript+Canvas實(shí)現(xiàn)帶跳動(dòng)效果的粒子動(dòng)畫

    JavaScript+Canvas實(shí)現(xiàn)帶跳動(dòng)效果的粒子動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了如何通過JavaScript和Canvas實(shí)現(xiàn)帶跳動(dòng)效果的粒子動(dòng)畫,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2023-03-03

最新評(píng)論

东城区| 长兴县| 怀化市| 宁安市| 乌兰察布市| 行唐县| 金门县| 北票市| 永城市| 临安市| 锡林浩特市| 道真| 电白县| 万荣县| 仁怀市| 定西市| 古丈县| 乐陵市| 塘沽区| 榆社县| 新和县| 襄城县| 固原市| 娄烦县| 综艺| 宣武区| 定远县| 甘肃省| 襄城县| 昌都县| 潞城市| 余庆县| 东丰县| 崇左市| 保德县| 乌拉特中旗| 耒阳市| 西畴县| 西丰县| 雅安市| 旺苍县|