![JS和JAVA使用JSON方法解析匯報_第1頁](http://file4.renrendoc.com/view/fb21ea273f326dee194ecf2731281060/fb21ea273f326dee194ecf27312810601.gif)
![JS和JAVA使用JSON方法解析匯報_第2頁](http://file4.renrendoc.com/view/fb21ea273f326dee194ecf2731281060/fb21ea273f326dee194ecf27312810602.gif)
![JS和JAVA使用JSON方法解析匯報_第3頁](http://file4.renrendoc.com/view/fb21ea273f326dee194ecf2731281060/fb21ea273f326dee194ecf27312810603.gif)
![JS和JAVA使用JSON方法解析匯報_第4頁](http://file4.renrendoc.com/view/fb21ea273f326dee194ecf2731281060/fb21ea273f326dee194ecf27312810604.gif)
![JS和JAVA使用JSON方法解析匯報_第5頁](http://file4.renrendoc.com/view/fb21ea273f326dee194ecf2731281060/fb21ea273f326dee194ecf27312810605.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實用文案JS和JAVA使用JSON方法解析.JS部分==================將json字符串轉(zhuǎn)換為 json對象的方法。在數(shù)據(jù)傳輸過程中, json是以文本,即字符串的形式傳遞的,而 JS操作的是JSON對象,所以,JSON對象和JSON字符串之間的相互轉(zhuǎn)換是關(guān)鍵。例如:JSON字符串:[javascript]viewplaincopy 在CODE上查看代碼片派生到我的代碼片varstr1='{"name":"cxh","sex":"man"}';JSON對象:[javascript]viewplaincopy 在CODE上查看代碼片派生到我的代碼片varstr2={"name":"cxh","sex":"man"};一、JSON字符串轉(zhuǎn)換為 JSON對象要使用上面的 str1,必須使用下面的方法先轉(zhuǎn)化為 JSON對象:[javascript]viewplaincopy 在CODE上查看代碼片派生到我的代碼片由JSON字符串轉(zhuǎn)換為JSON對象varobj=eval('('+str+')');或者[javascript]viewplaincopy 在CODE上查看代碼片派生到我的代碼片由JSON字符串轉(zhuǎn)換為JSON對象varobj=str.parseJSON();或者[javascript]viewplaincopy 在CODE上查看代碼片派生到我的代碼片由JSON字符串轉(zhuǎn)換為JSON對象varobj=JSON.parse(str);然后,就可以這樣讀?。篬javascript]viewplaincopy 在CODE上查看代碼片派生到我的代碼片Alert();Alert(obj.sex);特別注意:如果 obj本來就是一個JSON對象,那么使用 eval()函數(shù)轉(zhuǎn)換后(哪怕是多次轉(zhuǎn)換)還是 JSON對象,但是使用 parseJSON()函數(shù)處理后會有問題(拋出語法異常)。二、可以使用 toJSONString() 或者全局方法 JSON.stringify() 將JSON對象轉(zhuǎn)化為 JSON字符串。例如:[javascript]viewplaincopy 在CODE上查看代碼片派生到我的代碼片將JSON對象轉(zhuǎn)化為JSON字符varlast=obj.toJSONString();或者[javascript]viewplaincopy 在CODE上查看代碼片派生到我的代碼片將JSON對象轉(zhuǎn)化為JSON字符varlast=JSON.stringify(obj);alert(last);標準文檔實用文案注意:上面的幾個方法中,除了 eval()函數(shù)是js自帶的之外,其他的幾個方法都來自 json.js包。新版本的 JSON修改了 API,將JSON.stringify() 和JSON.parse() 兩個方法都注入到了 JavaScript 的內(nèi)建對象里面,前者變成了 Object.toJSONString() ,而后者變成了 String.parseJSON() 。如果提示找不到 toJSONString() 和parseJSON()方法,則說明您的json包版本太低。.Java部分===============1.json-lib 是一個java類庫,提供將 Java對象,包括 beans,maps,collections,JavaarraysandXML 等轉(zhuǎn)換成JSON,或者反向轉(zhuǎn)換的功能。2.json-lib 主頁 :3.執(zhí)行環(huán)境需要以下類庫支持 (Maven 構(gòu)建)[html]viewplaincopy 在CODE上查看代碼片派生到我的代碼片pom.xml<dependency><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency>下表中是Java與JavaScript 類型對應(yīng)關(guān)系。代碼示例:注:在將 Json 形式的字符串轉(zhuǎn)換為 JavaBean 的時候需要注意 JavaBean 中必須有無參構(gòu)造函數(shù),否則會報如下找不到初始化方法的錯誤JavaBean代碼:[java]viewplaincopy 在CODE上查看代碼片派生到我的代碼片publicclassStudent{// 姓名privateStringname;//年齡privateStringage;//住址privateStringaddress;在將Json形式的字符串轉(zhuǎn)換為JavaBean的時候需要注意JavaBean中必須有無參構(gòu)造函數(shù),否則會報如下找不到初始化方法的錯誤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+"]";}}提供兩個工具類, json轉(zhuǎn)換map的實現(xiàn)方法,有點兒簡單,應(yīng)付簡單的需求沒問題[java]viewplaincopy 在CODE上查看代碼片派生到我的代碼片/****將json格式的字符串解析成 Map對象@paramobjectJSON字符串*@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對象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> 詳細說明*@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();JSONObjectjson2=it.next();list.add(parseJSON2Map(json2.toString()));}map.put(k.toString(),list);}else{map.put(k.toString(),v);}}returnmap;}測試代碼:[java]viewplaincopy 在CODE上查看代碼片派生到我的代碼片標準文檔實用文案publicclassTest{@SuppressWarnings({"unused","rawtypes","unchecked"})publicstaticvoidmain(String[]args){///******************************普通java實體類轉(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"}//2、使用JSONArrayJSONArrayjsonArray=JSONArray.fromObject(stu);StringstrArray=jsonArray.toString();//strArray:[{"address":" 北京市西城區(qū)","age":"23","name":"JSON"}]/////////////////////******************************//JSON 字符串--》》java對象///******************************//定義兩種不同格式的字符串StringobjectStr="{\"name\":\"JSONStu1\",\"age\":\"18\",\"address\":\"北京市西城區(qū)\"}";StringarrayStr="[{\"name\":\"JSONStu2\",\"age\":\"22\",\"address\":\"濟南市歷城區(qū)\"}]";//1、使用JSONObject--將文字列轉(zhuǎn)換為JSON標準文檔實用文案JSONObjectjsonObject2=JSONObject.fromObject(objectStr);Studentstu2=(Student)JSONObject.toBean(jsonObject2,Student.class);//2、使用JSONArray-- 將文字列轉(zhuǎn)換為 JSONJSONArrayjsonArray2=JSONArray.fromObject(arrayStr);//獲得jsonArray 的第一個元素JSONObjectjsonObject3=JSONObject.fromObject(o);Studentstu3=(Student)JSONObject.toBean(jsonObject3,Student.class);///******************************//Map 轉(zhuǎn)換成json,大多使用jsonObject (注1)///******************************不建議使用出自于有序的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); 轉(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);//2、JSONArrayJSONArraymapArray=JSONArray.fromObject(map4);標準文檔實用文案///******************************//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);///******************************//json 字符串--》》list///******************************StringarrayStr2="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\" 濟南高新區(qū)\"}]";//轉(zhuǎn)化為listLis
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有關(guān)抵押借款合同范文
- oem委托加工合同協(xié)議常用范本年
- 變電站安裝工程承包合同模板
- 2024年高考英語 (全國甲卷)真題詳細解讀及評析
- 個人商品購銷合同
- 2025年外研版九年級歷史下冊月考試卷含答案
- 貨物運輸合同、法規(guī)與保險
- 2025年外研版九年級歷史下冊階段測試試卷
- 造紙機購買合同
- 民政局離婚的協(xié)議書范本
- 《字體設(shè)計》課件-企業(yè)標準字字體設(shè)計的原則
- 印度與阿拉伯的數(shù)學
- 口腔科院感知識培訓針刺傷
- 會陰切開傷口裂開的護理查房
- 《鋼鐵是怎樣煉成的》選擇題100題(含答案)
- 2024年國新國際投資有限公司招聘筆試參考題庫含答案解析
- 食堂餐廳服務(wù)方案投標方案(技術(shù)標)
- Creo-7.0基礎(chǔ)教程-配套課件
- 六年級人教版上冊數(shù)學計算題練習題(及答案)100解析
- 超聲科質(zhì)量控制制度及超聲科圖像質(zhì)量評價細則
- 初中物理滬粵版八年級下冊《第六章 力和機械》章節(jié)練習(含答案)
評論
0/150
提交評論