




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
. JS和JAVA使用JSON方法解析一.JS部分=將json字符串轉(zhuǎn)換為json對象的方法。在數(shù)據(jù)傳輸過程中,json是以文本,即字符串的形式傳遞的,而JS操作的是JSON對象,所以,JSON對象和JSON字符串之間的相互轉(zhuǎn)換是關(guān)鍵。例如:JSON字符串:javascript view plain copy 在CODE上查看代碼片派生到我的代碼片var str1 = name: cxh, sex: man ; JSON對象:javascript view plain copy 在CODE上查看代碼片派生到我的代碼片var str2 = name: cxh, sex: man ; 一、JSON字符串轉(zhuǎn)換為JSON對象要使用上面的str1,必須使用下面的方法先轉(zhuǎn)化為JSON對象:javascript view plain copy 在CODE上查看代碼片派生到我的代碼片/由JSON字符串轉(zhuǎn)換為JSON對象 var obj = eval( + str + ); 或者javascript view plain copy 在CODE上查看代碼片派生到我的代碼片/由JSON字符串轉(zhuǎn)換為JSON對象 var obj = str.parseJSON(); 或者javascript view plain copy 在CODE上查看代碼片派生到我的代碼片/由JSON字符串轉(zhuǎn)換為JSON對象 var obj = JSON.parse(str); 然后,就可以這樣讀?。簀avascript view plain copy 在CODE上查看代碼片派生到我的代碼片Alert(); Alert(obj.sex); 特別注意:如果obj本來就是一個JSON對象,那么使用eval()函數(shù)轉(zhuǎn)換后(哪怕是多次轉(zhuǎn)換)還是JSON對象,但是使用parseJSON()函數(shù)處理后會有問題(拋出語法異常)。二、可以使用toJSONString()或者全局方法JSON.stringify()將JSON對象轉(zhuǎn)化為JSON字符串。例如:javascript view plain copy 在CODE上查看代碼片派生到我的代碼片/將JSON對象轉(zhuǎn)化為JSON字符 var last=obj.toJSONString(); 或者javascript view plain copy 在CODE上查看代碼片派生到我的代碼片/將JSON對象轉(zhuǎn)化為JSON字符 var last=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, Java arrays and XML等轉(zhuǎn)換成JSON,或者反向轉(zhuǎn)換的功能。2. json-lib 主頁 : http:/json-lib.sourceforge.NET/3.執(zhí)行環(huán)境 需要以下類庫支持(Maven構(gòu)建)html view plain copy 在CODE上查看代碼片派生到我的代碼片pom.xml net.sf.json-lib json-lib 2.4 jdk15 下表中是Java與JavaScript類型對應(yīng)關(guān)系。代碼示例:注:在將 Json 形式的字符串轉(zhuǎn)換為 JavaBean 的時候需要注意 JavaBean 中必須有無參構(gòu)造函數(shù),否則會報如下找不到初始化方法的錯誤JavaBean代碼:java view plain copy 在CODE上查看代碼片派生到我的代碼片package com.ppl.jsonconvert; public class Student /姓名 private String name; /年齡 private String age; /住址 private String address; /在將 Json 形式的字符串轉(zhuǎn)換為 JavaBean 的時候需要注意 JavaBean 中必須有無參構(gòu)造函數(shù),否則會報如下找不到初始化方法的錯誤 public Student() super(); public Student(String name, String age, String address) super(); = name; this.age = age; this.address = address; public String getName() return name; public void setName(String name) = name; public String getAge() return age; public void setAge(String age) this.age = age; public String getAddress() return address; public void setAddress(String address) this.address = address; Override public String toString() return Student name= + name + , age= + age + , address= + address + ; 提供兩個工具類,json轉(zhuǎn)換map的實現(xiàn)方法,有點兒簡單,應(yīng)付簡單的需求沒問題java view plain copy 在CODE上查看代碼片派生到我的代碼片/* * 將json格式的字符串解析成Map對象 * param object * JSON字符串 * return Map集合 */ public static Map toHashMap(Object object) LinkedHashMap dataMap = new LinkedHashMap(); / 將json字符串轉(zhuǎn)換成jsonObject JSONObject jsonObject = JSONObject.fromObject(object); Iterator it = jsonObject.keys(); / 遍歷jsonObject數(shù)據(jù),添加到Map對象 while (it.hasNext() String key = String.valueOf(it.next(); String value = (String) jsonObject.get(key); dataMap.put(key, value); return dataMap; java view plain copy 在CODE上查看代碼片派生到我的代碼片/* * * json轉(zhuǎn)換map. * 詳細(xì)說明 * param jsonStr json字符串 * return * return Map 集合 * throws * author slj */ public static Map parseJSON2Map(String jsonStr) ListOrderedMap map = new ListOrderedMap(); /最外層解析 JSONObject json = JSONObject.fromObject(jsonStr); for(Object k : json.keySet() Object v = json.get(k); /如果內(nèi)層還是數(shù)組的話,繼續(xù)解析 if(v instanceof JSONArray) ListMap list = new ArrayListMap(); Iterator it = (JSONArray)v).iterator(); while(Next() JSONObject json2 = it.next(); list.add(parseJSON2Map(json2.toString(); map.put(k.toString(), list); else map.put(k.toString(), v); return map; 測試代碼:java view plain copy 在CODE上查看代碼片派生到我的代碼片package com.ppl.jsonconvert; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import mons.JsonUtils; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class Test SuppressWarnings( unused, rawtypes, unchecked ) public static void main(String args) /* /普通java實體類轉(zhuǎn)化為JSON字符串形式 /* Student stu=new Student(); stu.setName(JSON); stu.setAge(23); stu.setAddress(北京市西城區(qū)); /1、使用JSONObject JSONObject jsonObject = JSONObject.fromObject(stu); String strJson=jsonObject.toString(); /strJson:address:北京市西城區(qū),age:23,name:JSON System.out.println(strJson:+strJson); /2、使用JSONArray JSONArray jsonArray=JSONArray.fromObject(stu); String strArray=jsonArray.toString(); /strArray:address:北京市西城區(qū),age:23,name:JSON System.out.println(strArray:+strArray); / /* /JSON字符串-java對象 /* /定義兩種不同格式的字符串 String objectStr=name:JSONStu1,age:18,address:北京市西城區(qū); String arrayStr=name:JSONStu2,age:22,address:濟南市歷城區(qū); /1、使用JSONObject-將文字列轉(zhuǎn)換為JSON JSONObject jsonObject2=JSONObject.fromObject(objectStr); Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class); System.out.println(stu2:+stu2); /2、使用JSONArray-將文字列轉(zhuǎn)換為JSON JSONArray jsonArray2=JSONArray.fromObject(arrayStr); /獲得jsonArray的第一個元素 Object o=Array2.get(0); JSONObject jsonObject3=JSONObject.fromObject(o); Student stu3=(Student)JSONObject.toBean(jsonObject3, Student.class); System.out.println(stu3:+stu3); /* /Map轉(zhuǎn)換成json, 大多使用jsonObject(注1) /* /不建議使用出自于 mons.collections.OrderedMap /Map ordermap = (Map)new ListOrderedMap(); /有序的Map Map ordermap = new LinkedHashMap(); Map map = new HashMap(); map.put( name, json ); map.put( bool, Boolean.TRUE ); map.put( int, new Integer(1) ); map.put( arr, new Stringa,b ); map.put( func, function(i) return this.arri; ); JSONObject jsonObjectMap = JSONObject.fromObject( map ); System.out.println( Map轉(zhuǎn)換成json:+jsonObjectMap ); /注1示例詳解 Student stu4=new Student(JSON,28,上海); Map map4=new HashMap(); map4.put(first, stu4); /1、JSONObject JSONObject mapObject=JSONObject.fromObject(map4); System.out.println(mapObject+mapObject.toString(); /2、JSONArray JSONArray mapArray=JSONArray.fromObject(map4); System.out.println(mapArray:+mapArray.toString(); /* /list-json字符串,使用JSONArray /* Student stu5=new Student(student1,16,jinan); Student stu6=new Student(student2,26,qingdao); List lists=new ArrayList(); lists.add(stu5); lists.add(stu6); /1、 使用JSONArray JSONArray listArray=JSONArray.fromObject(lists); System.out.println(listArray:+listArray.toString(); /* /json字符串-list /* String arrayStr2=name:JSON,age:24,
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育數(shù)據(jù)洞察下的學(xué)生發(fā)展軌跡分析
- 線性排序算法在生物數(shù)據(jù)分析中的魯棒性研究-洞察闡釋
- 草原生態(tài)系統(tǒng)與可持續(xù)農(nóng)業(yè)的適應(yīng)性研究-洞察闡釋
- 線路施工安全措施
- 探索教育政策下的教師激勵機制
- 開展安全生產(chǎn)自查自糾
- 智慧課堂如何實現(xiàn)高效互動教學(xué)
- 高能強子物理與粒子物理前沿-洞察闡釋
- 高效輻照干燥與包裝技術(shù)研究-洞察闡釋
- 安全生產(chǎn)法正式版
- 脊髓腫瘤的護理查房
- 2025年醫(yī)師三基考試題及答案
- 中遠(yuǎn)海運招聘筆試題庫2025
- 溫州市2024-2025學(xué)年高一下學(xué)期6月期末-英語試卷及答案
- 2025至2030中國核應(yīng)急機器人行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展報告
- 導(dǎo)管室護理管理制度
- 降低跌倒事件的發(fā)生率QC圈
- 深靜脈血栓的試題及答案
- 2025年安徽省郵政行業(yè)職業(yè)技能大賽(快遞員賽項)備賽試題庫(含答案)
- 汽車產(chǎn)業(yè)鏈協(xié)同發(fā)展-洞察闡釋
- 滴灌帶造顆粒合同協(xié)議
評論
0/150
提交評論