這篇文章主要介紹“Json的詳細(xì)介紹以及fastjson使用教程”,在日常操作中,相信很多人在Json的詳細(xì)介紹以及fastjson使用教程問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Json的詳細(xì)介紹以及fastjson使用教程”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運(yùn)營、成都app開發(fā)、手機(jī)網(wǎng)站開發(fā)、微信網(wǎng)站制作、軟件開發(fā)、棕樹數(shù)據(jù)中心等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)建站可以獲得的服務(wù)效果。
Json是一種輕量級的數(shù)據(jù)交換格式,采用一種“鍵:值”對的文本格式來存儲和表示數(shù)據(jù),在系統(tǒng)交換數(shù)據(jù)過程中常常被使用,是一種理想的數(shù)據(jù)交換語言。在使用Java做Web開發(fā)時,不可避免的會遇到Json的使用。下面我們就簡單講一下Json的使用以及fastjson.jar包的使用。
我們先來看以下數(shù)據(jù):
{ "ID": 1001, "name": "張三", "age": 24 }
第一個數(shù)據(jù)就是一個Json對象,觀察它的數(shù)據(jù)形式,可以得出以下語法:
1:數(shù)據(jù)在花括號中
2:數(shù)據(jù)以"鍵:值"對的形式出現(xiàn)(其中鍵多以字符串形式出現(xiàn),值可取字符串,數(shù)值,甚至其他json對象)
3:每兩個"鍵:值"對以逗號分隔(最后一個"鍵:值"對省略逗號)
遵守上面3點(diǎn),便可以形成一個json對象。
接下來我們再看第二個數(shù)據(jù),觀察它的數(shù)據(jù)形式,可以得出以下語法:
[ {"ID": 1001, "name": "張三", "age": 24}, {"ID": 1002, "name": "李四", "age": 25}, {"ID": 1003, "name": "王五", "age": 22} ]
1:數(shù)據(jù)在方括號中(可理解為數(shù)組)
2:方括號中每個數(shù)據(jù)以json對象形式出現(xiàn)
3:每兩個數(shù)據(jù)以逗號分隔(最后一個無需逗號)
遵守上面3點(diǎn),便可形成一個json對象數(shù)組(及一個數(shù)組中,存儲了多個json對象)
理解了上面兩種基本的形式,我們就可以得出其他的數(shù)據(jù)形式,例如下面這個:
{ "部門名稱":"研發(fā)部", "部門成員":[ {"ID": 1001, "name": "張三", "age": 24}, {"ID": 1002, "name": "李四", "age": 25}, {"ID": 1003, "name": "王五", "age": 22}], "部門位置":"xx樓21號" }
這是上面兩個基本形式結(jié)合出來的一種變形,通過這種變形,使得數(shù)據(jù)的封裝具有很大的靈活性,能讓開發(fā)者自由的發(fā)揮想象力。
JSON字符串也是在平時開發(fā)中使用較多的,json字符串應(yīng)滿足以下條件:
1:它必須是一個字符串,由" "或者' '包裹數(shù)據(jù),支持字符串的各種操作
2:里面的數(shù)據(jù)格式應(yīng)該要滿足其中一個格式,可以是json對象,也可以是json對象數(shù)組或者是兩種基本形式的組合變形。
總結(jié):json可以簡單的分為基本形式:json對象,json對象數(shù)組。兩種基本格式組合變形出其他的形式,但其本質(zhì)還是json對象或者json對象數(shù)組中的一種。json對象或?qū)ο髷?shù)組可以轉(zhuǎn)化為json字符串,使用于不同的場合。
注意點(diǎn):在封裝json數(shù)據(jù)的時候,很容易出現(xiàn)錯誤,比如粗心的在最后一條數(shù)據(jù)的末尾加上了逗號等等,這里我提供一個在線驗證工具,方便大家驗證json數(shù)據(jù)格式的正確性
http://www.bejson.com/
fastjson.jar是阿里爸爸開發(fā)的一款專門用于Java開發(fā)的包,可以方便的實(shí)現(xiàn)json對象與JavaBean對象的轉(zhuǎn)換,實(shí)現(xiàn)JavaBean對象與json字符串的轉(zhuǎn)換,實(shí)現(xiàn)json對象與json字符串的轉(zhuǎn)換。除了這個fastjson以外,還有Google開發(fā)的Gson包,其他形式的如net.sf.json包,都可以實(shí)現(xiàn)json的轉(zhuǎn)換。方法名稱不同而已,最后的實(shí)現(xiàn)結(jié)果都是一樣的。
將json字符串轉(zhuǎn)化為json對象 在net.sf.json中是這么做的 JSONObject obj = new JSONObject().fromObject(jsonStr);//將json字符串轉(zhuǎn)換為json對象 在fastjson中是這么做的 JSONObject obj=JSON.parseObject(jsonStr);//將json字符串轉(zhuǎn)換為json對象
今天我們主要講fastjson的使用,首先應(yīng)該在Java工程中導(dǎo)入對應(yīng)的fastjson.jar包,
fastjson.jar包原始下載地址:https://github.com/alibaba/fastjson
點(diǎn)擊頁面中的download即可下載最新的包
至此,JSON類中的方法也講解的差不多了,下面給出Java實(shí)例來實(shí)現(xiàn)以上的各種轉(zhuǎn)換。
測試類:
package jsonTest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; public class MyJson { public static void main(String[] args) { List<Student> list=new ArrayList<>(); Student student=new Student("bob",24); Student student12=new Student("lily", 23); list.add(student); list.add(student12); System.out.println("*******javaBean to jsonString*******"); String str1=JSON.toJSONString(student); System.out.println(str1); System.out.println(JSON.toJSONString(list)); System.out.println(); System.out.println("******jsonString to javaBean*******"); //Student stu1=JSON.parseObject(str1,new TypeReference<Student>(){}); Student stu1=JSON.parseObject(str1,Student.class); System.out.println(stu1); System.out.println(); System.out.println("******javaBean to jsonObject******"); JSONObject jsonObject1=(JSONObject)JSON.toJSON(student); System.out.println(jsonObject1.getString("name")); System.out.println(); System.out.println("******jsonObject to javaBean******"); Student student2=JSON.toJavaObject(jsonObject1, Student.class); System.out.println(student2); System.out.println(); System.out.println("*******javaBean to jsonArray******"); List<Student> stulist=new ArrayList<>(); for(int i=0;i<5;i++){ stulist.add(new Student("student"+i, i)); } JSONArray jsonArrays=(JSONArray)JSON.toJSON(stulist); for(int i=0;i<jsonArrays.size();i++){ System.out.println(jsonArrays.getJSONObject(i)); } System.out.println(); System.out.println("*****jsonArry to javalist******"); List<Student> myList=new ArrayList<>(); for(int i=0;i<jsonArrays.size();i++){ Student student3=JSON.toJavaObject(jsonArrays.getJSONObject(i), Student.class); myList.add(student3); } for(Student stu:myList){ System.out.println(stu); } System.out.println(); System.out.println("*****jsonObject to jsonString*****"); String str4=JSON.toJSONString(jsonObject1); System.out.println(str4); System.out.println(); System.out.println("*******jsonString to jsonObject*****"); JSONObject jso1=JSON.parseObject(str1); System.out.println(jso1.getString("name")); System.out.println(); System.out.println("*****jsonString to jsonArray*****"); JSONArray jArray=JSON.parseArray(JSON.toJSONString(stulist)); for(int i=0;i<jArray.size();i++){ System.out.println(jArray.getJSONObject(i)); } System.out.println(); } }
測試類對應(yīng)的javabean類:
package jsonTest; public class Student { private String name; private int age; public Student() { // TODO Auto-generated constructor stub } public Student(String name,int age){ this.name=name; this.age=age; } public void setName(String name){ this.name=name; } public String getName(){ return name; } public void setAge(int age){ this.age=age; } public int getAge(){ return age; } @Override public String toString() { // TODO Auto-generated method stub return "student [name="+name+">
到此,關(guān)于“Json的詳細(xì)介紹以及fastjson使用教程”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
新聞名稱:Json的詳細(xì)介紹以及fastjson使用教程
文章分享:http://jinyejixie.com/article18/posggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站改版、企業(yè)網(wǎng)站制作、做網(wǎng)站、用戶體驗、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)