JS和JAVA使用JSON方法解析_第1頁
JS和JAVA使用JSON方法解析_第2頁
JS和JAVA使用JSON方法解析_第3頁
JS和JAVA使用JSON方法解析_第4頁
JS和JAVA使用JSON方法解析_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

..JS和JAVA使用JSON方法解析一.JS部分==================將json字符串轉(zhuǎn)換為json對(duì)象的方法。在數(shù)據(jù)傳輸過程中,json是以文本,即字符串的形式傳遞的,而JS操作的是JSON對(duì)象,所以,JSON對(duì)象和JSON字符串之間的相互轉(zhuǎn)換是關(guān)鍵。例如:JSON字符串:[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片varstr1='{"name":"cxh","sex":"man"}';JSON對(duì)象:[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片varstr2={"name":"cxh","sex":"man"};一、JSON字符串轉(zhuǎn)換為JSON對(duì)象要使用上面的str1,必須使用下面的方法先轉(zhuǎn)化為JSON對(duì)象:[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片//由JSON字符串轉(zhuǎn)換為JSON對(duì)象varobj=eval<'<'+str+'>'>;或者[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片//由JSON字符串轉(zhuǎn)換為JSON對(duì)象varobj=str.parseJSON<>;或者[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片//由JSON字符串轉(zhuǎn)換為JSON對(duì)象varobj=JSON.parse<str>;然后,就可以這樣讀取:[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片Alert<>;Alert<obj.sex>;特別注意:如果obj本來就是一個(gè)JSON對(duì)象,那么使用eval〔函數(shù)轉(zhuǎn)換后〔哪怕是多次轉(zhuǎn)換還是JSON對(duì)象,但是使用parseJSON〔函數(shù)處理后會(huì)有問題〔拋出語法異常。二、可以使用toJSONString<>或者全局方法JSON.stringify<>將JSON對(duì)象轉(zhuǎn)化為JSON字符串。例如:[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片//將JSON對(duì)象轉(zhuǎn)化為JSON字符varlast=obj.toJSONString<>;或者[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片//將JSON對(duì)象轉(zhuǎn)化為JSON字符varlast=JSON.stringify<obj>;alert<last>;注意:上面的幾個(gè)方法中,除了eval<>函數(shù)是js自帶的之外,其他的幾個(gè)方法都來自json.js包。新版本的JSON修改了API,將JSON.stringify<>和JSON.parse<>兩個(gè)方法都注入到了JavaScript的內(nèi)建對(duì)象里面,前者變成了Object.toJSONString<>,而后者變成了String.parseJSON<>。如果提示找不到toJSONString<>和parseJSON<>方法,則說明您的json包版本太低。二.Java部分===============1.json-lib是一個(gè)java類庫,提供將Java對(duì)象,包括beans,maps,collections,JavaarraysandXML等轉(zhuǎn)換成JSON,或者反向轉(zhuǎn)換的功能。3.執(zhí)行環(huán)境需要以下類庫支持<Maven構(gòu)建>[html]viewplaincopy在CODE上查看代碼片派生到我的代碼片pom.xml<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency>下表中是Java與JavaScript類型對(duì)應(yīng)關(guān)系。代碼示例:注:在將Json形式的字符串轉(zhuǎn)換為JavaBean的時(shí)候需要注意JavaBean中必須有無參構(gòu)造函數(shù),否則會(huì)報(bào)如下找不到初始化方法的錯(cuò)誤JavaBean代碼:[java]viewplaincopy在CODE上查看代碼片派生到我的代碼片packagecom.ppl.jsonconvert;publicclassStudent{//姓名privateStringname;//年齡privateStringage;//住址privateStringaddress;//在將Json形式的字符串轉(zhuǎn)換為JavaBean的時(shí)候需要注意JavaBean中必須有無參構(gòu)造函數(shù),否則會(huì)報(bào)如下找不到初始化方法的錯(cuò)誤publicStudent<>{super<>;}publicStudent<Stringname,Stringage,Stringaddress>{super<>;=name;this.age=age;this.address=address;}publicStringgetName<>{returnname;}publicvoidsetName<Stringname>{=name;}publicStringgetAge<>{returnage;}publicvoidsetAge<Stringage>{this.age=age;}publicStringgetAddress<>{returnaddress;}publicvoidsetAddress<Stringaddress>{this.address=address;}OverridepublicStringtoString<>{return"Student[name="+name+",age="+age+",address="+address+"]";}}提供兩個(gè)工具類,json轉(zhuǎn)換map的實(shí)現(xiàn)方法,有點(diǎn)兒簡單,應(yīng)付簡單的需求沒問題[java]viewplaincopy在CODE上查看代碼片派生到我的代碼片/****將json格式的字符串解析成Map對(duì)象*paramobject*JSON字符串*returnMap集合*/publicstaticMap<String,String>toHashMap<Objectobject>{LinkedHashMap<String,String>dataMap=newLinkedHashMap<String,String><>;//將json字符串轉(zhuǎn)換成jsonObjectJSONObjectjsonObject=JSONObject.fromObject<object>;Iteratorit=jsonObject.keys<>;//遍歷jsonObject數(shù)據(jù),添加到Map對(duì)象while<it.hasNext<>>{Stringkey=String.valueOf<it.next<>>;Stringvalue=<String>jsonObject.get<key>;dataMap.put<key,value>;}returndataMap;}[java]viewplaincopy在CODE上查看代碼片派生到我的代碼片/****json轉(zhuǎn)換map.*<br>詳細(xì)說明*paramjsonStrjson字符串*return*returnMap<String,Object>集合*throws*authorslj*/publicstaticMap<String,Object>parseJSON2Map<StringjsonStr>{ListOrderedMapmap=newListOrderedMap<>;//最外層解析JSONObjectjson=JSONObject.fromObject<jsonStr>;for<Objectk:json.keySet<>>{Objectv=json.get<k>;//如果內(nèi)層還是數(shù)組的話,繼續(xù)解析if<vinstanceofJSONArray>{List<Map<String,Object>>list=newArrayList<Map<String,Object>><>;Iterator<JSONObject>it=<<JSONArray>v>.iterator<>;while<it.haswang027Next<>>{JSONObjectjson2=it.next<>;list.add<parseJSON2Map<json2.toString<>>>;}map.put<k.toString<>,list>;}else{map.put<k.toString<>,v>;}}returnmap;}測試代碼:[java]viewplaincopy在CODE上查看代碼片派生到我的代碼片packagecom.ppl.jsonconvert;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.LinkedHashMap;importjava.util.List;importjava.util.Map;sonUtils;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;publicclassTest{SuppressWarnings<{"unused","rawtypes","unchecked"}>publicstaticvoidmain<String[]args>{///******************************//普通java實(shí)體類轉(zhuǎn)化為JSON字符串形式///******************************Studentstu=newStudent<>;stu.setName<"JSON">;stu.setAge<"23">;stu.setAddress<"北京市西城區(qū)">;//1、使用JSONObjectJSONObjectjsonObject=JSONObject.fromObject<stu>;StringstrJson=jsonObject.toString<>;//strJson:{"address":"北京市西城區(qū)","age":"23","name":"JSON"}System.out.println<"strJson:"+strJson>;//2、使用JSONArrayJSONArrayjsonArray=JSONArray.fromObject<stu>;StringstrArray=jsonArray.toString<>;//strArray:[{"address":"北京市西城區(qū)","age":"23","name":"JSON"}]System.out.println<"strArray:"+strArray>;/////////////////////******************************//JSON字符串--》》java對(duì)象///******************************//定義兩種不同格式的字符串StringobjectStr="{\"name\":\"JSONStu1\",\"age\":\"18\",\"address\":\"北京市西城區(qū)\"}";StringarrayStr="[{\"name\":\"JSONStu2\",\"age\":\"22\",\"address\":\"XX市歷城區(qū)\"}]";//1、使用JSONObject--將文字列轉(zhuǎn)換為JSONJSONObjectjsonObject2=JSONObject.fromObject<objectStr>;Studentstu2=<Student>JSONObject.toBean<jsonObject2,Student.class>;System.out.println<"stu2:"+stu2>;//2、使用JSONArray--將文字列轉(zhuǎn)換為JSONJSONArrayjsonArray2=JSONArray.fromObject<arrayStr>;//獲得jsonArray的第一個(gè)元素Objecto=Array2.get<0>;JSONObjectjsonObject3=JSONObject.fromObject<o>;Studentstu3=<Student>JSONObject.toBean<jsonObject3,Student.class>;System.out.println<"stu3:"+stu3>;///******************************//Map轉(zhuǎn)換成json,大多使用jsonObject〔注1///******************************//不建議使用出自于org.apachemons.collections.OrderedMap//Map<String,Integer>ordermap=<Map<String,Integer>>newListOrderedMap<>;//有序的MapMapordermap=newLinkedHashMap<String,String><>;Mapmap=newHashMap<String,Object><>;map.put<"name","json">;map.put<"bool",Boolean.TRUE>;map.put<"int",newInteger<1>>;map.put<"arr",newString[]{"a","b"}>;map.put<"func","function<i>{returnthis.arr[i];}">;JSONObjectjsonObjectMap=JSONObject.fromObject<map>;System.out.println<"Map轉(zhuǎn)換成json:"+jsonObjectMap>;//注1示例詳解Studentstu4=newStudent<"JSON","28","上海">;Map<String,Student>map4=newHashMap<String,Student><>;map4.put<"first",stu4>;//1、JSONObjectJSONObjectmapObject=JSONObject.fromObject<map4>;System.out.println<"mapObject"+mapObject.toString<>>;//2、JSONArrayJSONArraymapArray=JSONArray.fromObject<map4>;System.out.println<"mapArray:"+mapArray.toString<>>;///******************************//list--》》json字符串,使用JSONArray///******************************Studentstu5=newStudent<"student1","16","jinan">;Studentstu6=newStudent<"student2","26","qingdao">;List<Student>lists=newArrayList<Student><>;lists.add<stu5>;lists.add<stu6>;//1、使用JSONArrayJSONArraylistArray=JSONArray.fromObject<lists>;System.out.println<"listArray:"+listArray.toString<>>;///******************************//json字符串--》》list///******************************StringarrayStr2="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"XX高新區(qū)\"}]";//轉(zhuǎn)化為listList<Student>list2=<List<Student>>JSONArray.toList<JSONArray.fromObject

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論