json的基本使用

JSON是什麼 JSON怎麼用?

========================================================================================================

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於閱讀和編寫,同時也易於機器解析和生成。。

JSON的結構基於下面兩點

 1. "名稱/值"對的集合不同語言中,它被理解爲對象(object),記錄(record),結構(struct),字典(dictionary),哈希表 (hash table),鍵列表(keyed list)等

     2. 值的有序列表多數語言中被理解爲數組(array)

JSON使用:

 JSON以一種特定的字符串形式來表示 JavaScript 對象。如果將具有這樣一種形式的字符串賦給任意一個 JavaScript 變量,那麼該變量會變成一個對象引用,而這個對象就是字符串所構建出來的,好像有點拗口,我們還是用實例來說明。

 這裏假設我們需要創建一個 User對象,並具有以下屬性

 用戶ID

     用戶名
    用戶 Email
    您可以使用以下JSON形式來表示User對象:

{"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};

     然後如果把這一字符串賦予一個JavaScript 變量,那麼就可以直接使用對象的任一屬性了。

 完整代碼:

 <script>

     var User = {"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
     alert(User.Name);
    </script>
實際使用時可能更復雜一點,比如我們爲Name定義更詳細的結構,使它具有FirstName和LastName:

{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"qq◎hotmail.com"}

完整代碼:

<script>

var User = {"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"};
alert(User.Name.FirstName);
</script>
現在我們增加一個新的需求,我們某個頁面需要一個用戶列表,而不僅僅是一個單一的用戶信息,那麼這裏就需要創建一個用戶列表數組。
下面代碼演示了使 用JSON形式定義這個用戶列表:
[
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
]

完整代碼:

<script>

var UserList = [
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
];
alert(UserList[0].Name.FirstName);
</script>
事實上除了使用"."引用屬性外,我們還可以使用下面語句:

alert(UserList[0]["Name"]["FirstName"]); 或者 alert(UserList[0].Name["FirstName"]);

現在讀者應該對JSON的使用有點認識 了,歸納爲以下幾點:

對象是屬性、值對的集合。一個對象的開始於“{”,結束於“}”。每一個屬性名和值間用“:”提示,屬性間用“,”分隔。

數組是有順序的值的集合。一個數組開始於"[",結束於"]",值之間用","分隔。
值可以是引號裏的字符串、數字、true、false、null,也可以是對象或數組。這些結構都能嵌套。
字符串和數字的定義和C或Java基本一致。

 下面用2個很好的實例做解釋

 ===============================json 是什麼 json怎麼用 json實例 json源碼===================

例1 sitebao裏面的 ajax 獲得時間格式,在前臺動態的添加到下拉框的選項裏

不需要自己定義json的數組格式

public String getTimeStyle(){

TimeStyleDAO timeStyleDAO = TimeStyleDAO.getInstance();

timeStyles = timeStyleDAO.getAllStringStyle();

System.out.println(timeStyles.size());

JSONArray obj=JSONArray.fromObject(timeStyles);

getResponse().setContentType("text;charset=UTF-8");

try {

getResponse().getWriter().write(obj.toString());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return NONE;

}


=======頁面,獲得後臺傳過來的json對象,遍歷json數組,動態添加====

$.ajax({

url:"/sitebao62p/page_getTimeStyle.do?ajax=true",

cache:false,

data:data,

dataType:"json",

type:"POST",

success:function(data){

closeDIV("addModel");

openDIV("addProductModel");

data=eval_r(""+data+"");

$.each(data,function(index,item){

temp="<option value='"+item.id+"'>"+item.stringStyle+"</option>";

$("#producttimeStyleId").append(temp);

});

}

});

例2=================需要自己組裝json數組格式。====================

try{

StringBuffer sb=new StringBuffer("[");

int length=OneNesType.size();

for (int i = 0; i <length; i++) {

Column model=(Column)OneNesType.get(i);

sb.append("{");

sb.append("'id':");

sb.append(""+model.getId()+",");

sb.append("'name':");

sb.append("'"+model.getName()+"'");

sb.append("},");

}

if(sb.lastIndexOf(",")>0){

sb=new StringBuffer(sb.substring(0,sb.lastIndexOf(",")));

}

sb.append("]");

System.out.println(sb.toString());

getResponse().setContentType("text;charset=UTF-8");

getResponse().getWriter().write(sb.toString());

return null;

}catch(Exception e){

e.printStackTrace();

}

return NONE;

}

======================json 是什麼 json怎麼用 json實例 json源碼===================

例1 sitebao裏面的 ajax 獲得時間格式,在前臺動態的添加到下拉框的選項裏

不需要自己定義json的數組格式============

public String getTimeStyle(){

TimeStyleDAO timeStyleDAO = TimeStyleDAO.getInstance();

timeStyles = timeStyleDAO.getAllStringStyle();

System.out.println(timeStyles.size());

JSONArray obj=JSONArray.fromObject(timeStyles);

getResponse().setContentType("text;charset=UTF-8");

try {

getResponse().getWriter().write(obj.toString());

} catch (IOException e) {

e.printStackTrace();

}

return NONE;

}

=======頁面,獲得後臺傳過來的json對象,便利json數組,動態添加====

$.ajax({

url:"/sitebao62p/page_getTimeStyle.do?ajax=true",

cache:false,

data:data,

dataType:"json",

type:"POST",

success:function(data){

closeDIV("addModel");

openDIV("addProductModel");

data=eval_r(""+data+"");

$.each(data,function(index,item){

temp="<option value='"+item.id+"'>"+item.stringStyle+"</option>";

$("#producttimeStyleId").append(temp);

});

}

});

例2==================需要自己組裝json數組格式。==========================

try{

StringBuffer sb=new StringBuffer("[");

int length=OneNesType.size();

for (int i = 0; i <length; i++) {

Column model=(Column)OneNesType.get(i);

sb.append("{");

sb.append("'id':");

sb.append(""+model.getId()+",");

 sb.append("'name':");

sb.append("'"+model.getName()+"'");

sb.append("},");

}

if(sb.lastIndexOf(",")>0){

sb=new StringBuffer(sb.substring(0,sb.lastIndexOf(",")));

}

sb.append("]");

System.out.println(sb.toString());

getResponse().setContentType("text;charset=UTF-8");

getResponse().getWriter().write(sb.toString());

return null;

}catch(Exception e){

e.printStackTrace();

}

return NONE;

}

===============json 是什麼 json怎麼用 json實例 json源碼============

對於單獨的一個json串

public void getCategoryAjax(int catId,HttpServletResponse response){

Category c = new Category();

c = myCategoryService.getCategory(catId);

int uid = 1;

//如果我什麼都不需要返回,則下面怎麼寫?比如刪除的時候

//獲得我的目錄

List<Category> list = myCategoryService.myCategoryList(uid);

StringBuffer sb=new StringBuffer();

sb.append("{'catId':"+c.getCatId()+",'name':'"+c.getName()+"','description':'"+c.getDescription()+"'}");

//sb.append("]");

writerResponseRes(response, sb.toString());

}

js中的體現

function update_category(catId){

var catId = catId;

var name = "";

var description = "";

$.ajax({

url:"/iknowing/getCategoryAjax.html",

type:"POST",

dataType:"text",

data:'catId='+catId,

success:function(data){

data=eval_r("("+data+")");

name = data.name;

description = data.description;

$("#updateName").attr("value",name);

if(description!='undefined'){

$("#updateDescription").attr("value",description);

}

$("#updateCatId").attr("value",catId);

}

});

$('#updateDiv').dialog('open');

小結:

本文通過一個實例演示,初步瞭解了 JSON 的強大用途。可以歸結如下:

JSON 提供了一種優秀的面向對象的方法,以便將元數據緩存到客戶機上。

JSON 幫助分離了驗證數據和邏輯。
JSON 幫助爲 Web 應用程序提供了 Ajax 的本質。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章