[置頂]關於學習json的總結 -开发者知识库

[置頂]關於學習json的總結 -开发者知识库,第1张

什么是json

   JSON(JavaScript Object Notation)是一種輕量級的數據交換語言,以文為礎,且易於讓人閱讀,同時也方便了機器進行解析和生成。JSON簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種復雜的結構,其可以將JavaScript 對象中表示的一組數據轉換為字符串,然后就可以在函數之間輕松地傳遞這個字符串,或者在異步應用程序中將字符串從Web客戶機傳遞給服務器端程序。JSON采用完全獨立於程序語言的文本格式,但是也使用了類C語言的習慣(包括C、C 、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的數據交換語言

JSON建構有兩種結構

son簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組2種結構,通過這兩種結構可以表示各種復雜的結構

  1、對象:對象在js中表示為“{}”擴起來的內容,數據結構為 {key:value,key:value,…}的鍵值對的結構,在面向對象的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。

  2、數組:數組在js中是中括號“[]”擴起來的內容,數據結構為 [“java”,”javascript”,”vb”,…],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。
   經過對象、數組2種結構就可以組合成復雜的數據結構了。
不多說,直接上代碼

一:准備工作:

    要使程序可以運行必須引入JSON-lib包,JSON-lib包同時依賴於以下的JAR包:
JSON-lib包是一個beans,collections,maps,java arrays 和XML和JSON互相轉換的包。

導入下面的這幾個包:

[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第2张

點擊下載依賴包 http://download.csdn.net/detail/qq_25591985/9387669

二:java中使用json

目錄的結構

[置頂]關於學習json的總結 -开发者知识库,目錄的結構,第3张

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互相轉換的包。 */

public class JsonText {

public static void main(String[] args) {
// TODO Auto-generated method stub
beanTOJson();
arrayToJson();
listToJson();
}
/**
* bean對象轉為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轉換為json" json.getClass());
System.out.println("-----------------------------------------beanToJson() 結束------------------------------------------------");
}
/**
*array轉為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轉換為json" json.toString());
System.out.println("-----------------------------------------arrayToJson() 結束------------------------------------------------");
}
/**
*List轉為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轉換為json" json.toString());
System.out.println("-----------------------------------------listToJson() 結束------------------------------------------------");
}
}

下面對於各部分的代碼做說明:
bean對象轉為json
return void
[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第4张

運行結果如下
[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第5张

2. 數組轉換成json代碼

[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第6张

2. list轉換成json代碼
[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第7张

四:jsp中使用json

1、json字符串和json對象的區別。
字符串:這個很好解釋,指使用“”雙引號或’’單引號包括的字符。例如: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有安全隱患
* 現在大多數瀏覽器(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中讀取數據" id="json"/>
</body>
</html>

[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第8张

運行結果如下:

[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第9张

[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第10张

[置頂]關於學習json的總結 -开发者知识库,這里寫圖片描述,第11张

下面介紹eval和JSON.parse

eval:

JavaScript 函數 eval() 可用於將 JSON 文本轉換為 JavaScript 對象。eval() 函數使用的是 JavaScript 編譯器,可解析 JSON 文本,然后生成 JavaScript 對象。必須把文本包圍在括號中,這樣才能避免語法錯誤:

JSON.parse

現在大多數瀏覽器(IE8及以上,Chrome和Firefox差不多全部)自帶原生JSON對象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,請使用這兩個方法!

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复