版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)用文案JS和JAVA使用JSON方法解析.JS部分==================將json字符串轉(zhuǎn)換為 json對(duì)象的方法。在數(shù)據(jù)傳輸過(guò)程中, 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本來(lái)就是一個(gè)JSON對(duì)象,那么使用 eval()函數(shù)轉(zhuǎn)換后(哪怕是多次轉(zhuǎn)換)還是 JSON對(duì)象,但是使用 parseJSON()函數(shù)處理后會(huì)有問(wèn)題(拋出語(yǔ)法異常)。二、可以使用 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);標(biāo)準(zhǔn)文檔實(shí)用文案注意:上面的幾個(gè)方法中,除了 eval()函數(shù)是js自帶的之外,其他的幾個(gè)方法都來(lái)自 json.js包。新版本的 JSON修改了 API,將JSON.stringify() 和JSON.parse() 兩個(gè)方法都注入到了 JavaScript 的內(nèi)建對(duì)象里面,前者變成了 Object.toJSONString() ,而后者變成了 String.parseJSON() 。如果提示找不到 toJSONString() 和parseJSON()方法,則說(shuō)明您的json包版本太低。.Java部分===============1.json-lib 是一個(gè)java類庫(kù),提供將 Java對(duì)象,包括 beans,maps,collections,JavaarraysandXML 等轉(zhuǎn)換成JSON,或者反向轉(zhuǎn)換的功能。2.json-lib 主頁(yè) :3.執(zhí)行環(huán)境需要以下類庫(kù)支持 (Maven 構(gòu)建)[html]viewplaincopy 在CODE上查看代碼片派生到我的代碼片pom.xml<dependency><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 中必須有無(wú)參構(gòu)造函數(shù),否則會(huì)報(bào)如下找不到初始化方法的錯(cuò)誤JavaBean代碼:[java]viewplaincopy 在CODE上查看代碼片派生到我的代碼片publicclassStudent{// 姓名privateStringname;//年齡privateStringage;//住址privateStringaddress;在將Json形式的字符串轉(zhuǎn)換為JavaBean的時(shí)候需要注意JavaBean中必須有無(wú)參構(gòu)造函數(shù),否則會(huì)報(bào)如下找不到初始化方法的錯(cuò)誤publicStudent(){super();}publicStudent(Stringname,Stringage,Stringaddress){super();=name;this.age=age;this.address=address;}publicStringgetName(){returnname;標(biāo)準(zhǔn)文檔實(shí)用文案}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)兒簡(jiǎn)單,應(yīng)付簡(jiǎn)單的需求沒(méi)問(wèn)題[java]viewplaincopy 在CODE上查看代碼片派生到我的代碼片/****將json格式的字符串解析成 Map對(duì)象@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對(duì)象while(it.hasNext()){Stringkey=String.valueOf(it.next());Stringvalue=(String)jsonObject.get(key);dataMap.put(key,value);}returndataMap;標(biāo)準(zhǔn)文檔實(shí)用文案}[java]viewplaincopy 在CODE上查看代碼片派生到我的代碼片/****json轉(zhuǎn)換map.*<br> 詳細(xì)說(shuō)明*@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;}測(cè)試代碼:[java]viewplaincopy 在CODE上查看代碼片派生到我的代碼片標(biāo)準(zhǔn)文檔實(shí)用文案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"}//2、使用JSONArrayJSONArrayjsonArray=JSONArray.fromObject(stu);StringstrArray=jsonArray.toString();//strArray:[{"address":" 北京市西城區(qū)","age":"23","name":"JSON"}]/////////////////////******************************//JSON 字符串--》》java對(duì)象///******************************//定義兩種不同格式的字符串StringobjectStr="{\"name\":\"JSONStu1\",\"age\":\"18\",\"address\":\"北京市西城區(qū)\"}";StringarrayStr="[{\"name\":\"JSONStu2\",\"age\":\"22\",\"address\":\"濟(jì)南市歷城區(qū)\"}]";//1、使用JSONObject--將文字列轉(zhuǎn)換為JSON標(biāo)準(zhǔn)文檔實(shí)用文案JSONObjectjsonObject2=JSONObject.fromObject(objectStr);Studentstu2=(Student)JSONObject.toBean(jsonObject2,Student.class);//2、使用JSONArray-- 將文字列轉(zhuǎn)換為 JSONJSONArrayjsonArray2=JSONArray.fromObject(arrayStr);//獲得jsonArray 的第一個(gè)元素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);標(biāo)準(zhǔn)文檔實(shí)用文案///******************************//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\":\" 濟(jì)南高新區(qū)\"}]";//轉(zhuǎn)化為listLis
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 處理客訴learn法則
- 二手壓地輪轉(zhuǎn)讓協(xié)議書(shū)范文
- 二手履帶吊買賣合同協(xié)議書(shū)范文
- 刑事科學(xué)技術(shù)總論
- 蟬課件教學(xué)課件
- 2016年上海病歷質(zhì)控中心工作總結(jié)
- 2023-2024學(xué)年天津市寶坻區(qū)等部分區(qū)高三下學(xué)期精英聯(lián)賽數(shù)學(xué)試題
- 標(biāo)點(diǎn)符號(hào):智慧的語(yǔ)言筆觸-揭秘標(biāo)點(diǎn)符號(hào)的規(guī)則與藝術(shù)
- 雅安市高2022級(jí)(2025屆)高三“零診”考試 數(shù)學(xué)試卷(含標(biāo)準(zhǔn)答案)
- 感恩演講稿800字左右大全(30篇)
- 過(guò)程能力測(cè)量報(bào)告 Cg Cgk
- 國(guó)企領(lǐng)導(dǎo)人員管理暫行規(guī)定
- 高校學(xué)生干部培訓(xùn)會(huì)新聞稿
- 聚乙烯pe給水管施工安裝手冊(cè)-
- 《中華民族大團(tuán)結(jié)》(初中) 全冊(cè)教案(共12課)
- 人教版九年級(jí)物理全一冊(cè)課件【全冊(cè)】
- 顱內(nèi)動(dòng)脈瘤栓塞術(shù)課件
- 《鄉(xiāng)土中國(guó)》非連續(xù)性文本閱讀試題模擬練-2023屆高考語(yǔ)文備考復(fù)習(xí)
- “下壓式”傳接棒技術(shù)教學(xué)教案高一上學(xué)期體育與健康人教版
- 《國(guó)畫(huà)》課程標(biāo)準(zhǔn)
- 學(xué)校傳染病控制
評(píng)論
0/150
提交評(píng)論