JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換語言,以文為礎,且易于讓人閱讀,同時也方便了機器進行解析和生成。JSON簡單說就是javascript中的對象和數(shù)組,所以這兩種結(jié)構(gòu)就是對象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復雜的結(jié)構(gòu),其可以將JavaScript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個字符串,或者在異步應用程序中將字符串從Web客戶機傳遞給服務器端程序。JSON采用完全獨立于程序語言的文本格式,但是也使用了類C語言的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言
son簡單說就是javascript中的對象和數(shù)組,所以這兩種結(jié)構(gòu)就是對象和數(shù)組2種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復雜的結(jié)構(gòu)
1、對象:對象在js中表示為“{}”擴起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 {key:value,key:value,…}的鍵值對的結(jié)構(gòu),在面向?qū)ο蟮恼Z言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是 數(shù)字、字符串、數(shù)組、對象幾種。
2、數(shù)組:數(shù)組在js中是中括號“[]”擴起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 [“java”,”javascript”,”vb”,…],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數(shù)字、字符串、數(shù)組、對象幾種。
經(jīng)過對象、數(shù)組2種結(jié)構(gòu)就可以組合成復雜的數(shù)據(jù)結(jié)構(gòu)了。
不多說,直接上代碼
要使程序可以運行必須引入JSON-lib包,JSON-lib包同時依賴于以下的JAR包:
JSON-lib包是一個beans,collections,maps,java arrays 和XML和JSON互相轉(zhuǎn)換的包。
導入下面的這幾個包:
點擊下載依賴包 http://download.csdn.net/detail/qq_25591985/9387669
目錄的結(jié)構(gòu)
User.java如下
package json;public class User { private String name; private int age; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; }}
jsonText.java如下
package json;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JSONObject;/* * 要使程序可以運行必須引入JSON-lib包,JSON-lib包同時依賴于以下的JAR包: * JSON-lib包是一個beans,collections,maps,java arrays 和XML和JSON互相轉(zhuǎn)換的包。 */public class JsonText { public static void main(String[] args) { // TODO Auto-generated method stub beanTOJson(); arrayToJson(); listToJson(); } /** * bean對象轉(zhuǎn)為json * return void * */ public static void beanTOJson(){ User user=new User(); user.setAge(30); user.setName("劉德華"); user.setSex("男"); JSONObject json=JSONObject.fromObject(user); System.out.println("-----------------------------------------beanToJson() 開始------------------------------------------------"); System.out.println("這是對象bean轉(zhuǎn)換為json"+json.getClass()); System.out.println("-----------------------------------------beanToJson() 結(jié)束------------------------------------------------"); } /** *array轉(zhuǎn)為json *return void */ public static void arrayToJson(){ User user=new User(); user.setAge(30); user.setName("劉德華"); user.setSex("男"); User user1=new User(); user.setAge(30); user.setName("張學友"); user.setSex("男"); User[] array=new User[]{user,user1}; JSONArray json=JSONArray.fromObject(array); System.out.println("-----------------------------------------arrayToJson() 開始------------------------------------------------"); System.out.println("這是對象array轉(zhuǎn)換為json"+json.toString()); System.out.println("-----------------------------------------arrayToJson() 結(jié)束------------------------------------------------"); } /** *List轉(zhuǎn)為json *return void */ public static void listToJson(){ User user=new User(); user.setAge(30); user.setName("劉德華"); user.setSex("男"); User user1=new User(); user.setAge(30); user.setName("張學友"); user.setSex("男"); List<User> list =new ArrayList<User>(); list.add(user); list.add(user1); JSONArray json=JSONArray.fromObject(list); System.out.println("-----------------------------------------listToJson() 開始------------------------------------------------"); System.out.println("這是對象list轉(zhuǎn)換為json"+json.toString()); System.out.println("-----------------------------------------listToJson() 結(jié)束------------------------------------------------"); }}
下面對于各部分的代碼做說明:
bean對象轉(zhuǎn)為json
return void
運行結(jié)果如下
2. 數(shù)組轉(zhuǎn)換成json代碼
2. list轉(zhuǎn)換成json代碼
1、json字符串和json對象的區(qū)別。
字符串:這個很好解釋,指使用“”雙引號或’’單引號包括的字符。例如:var comStr = ‘this is string’;
json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = “{StudentID:’100’,Name:’tmac’,Hometown:’usa’}”;
json對象:指符合json格式要求的js對象。例如:var jsonObj = { StudentID: “100”, Name: “tmac”, Hometown: “usa” };
直接上圖上代碼
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-1.11.1.js"></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script type="text/javascript">/** * 方法一,用eval解析出json字符串,不過eval解析json有安全隱患 */ var user='{"name":"張三","sex":"男"}' var userb=eval("("+user+")"); alert(userb.name+" "+userb.sex);/**提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,stringify()用于從一個對象解析出字符串用eval解析出json字符串,不過eval解析json有安全隱患 * 現(xiàn)在大多數(shù)瀏覽器(IE8及以上,Chrome和Firefox差不多全部)自帶原生JSON對象 */ $(function(){ var json=JSON.parse( user ); $("#json").click(function(){ alert(json.sex); alert(json.name); //或者alert(obj.person[0]["name"]) }) })</script><title>Insert title here</title></head><body><input type="button" value="從json中讀取數(shù)據(jù)" id="json"/></body></html>
運行結(jié)果如下:
下面介紹eval和JSON.parse
eval:
JavaScript 函數(shù) eval() 可用于將 JSON 文本轉(zhuǎn)換為 JavaScript 對象。eval() 函數(shù)使用的是 JavaScript 編譯器,可解析 JSON 文本,然后生成 JavaScript 對象。必須把文本包圍在括號中,這樣才能避免語法錯誤:
JSON.parse
現(xiàn)在大多數(shù)瀏覽器(IE8及以上,Chrome和Firefox差不多全部)自帶原生JSON對象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,請使用這兩個方法!
聯(lián)系客服