Json简介:
JSON 定义(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript 编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式。
"名称/值"对的集合不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键 列表(keyed list)等
值的有序列表多数语言中被理解为数组(array)
Json使用:
JSON以一种特定的字符串形式来表示 JavaScript 对象。如果将具有这样一种形式的字符串赋给任意一个 JavaScript 变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的,好像有点拗口,我们还是用实例来说明。
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”开始,以“}”结束。每个“名称”后跟一个“:”,“‘名称/值’对”之间使用“,”分隔。
数组是值(value)的有序集合。一个数组以“[”开始,“]”结束。值之间使用“,”分隔。
值(value)可以是双引号括起来的字符串(String)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜体转义。一个字符(character)即一个单独的字符串(characeter string)。
这里假设我们需要创建一个User对象,并具有以下 属性 id,书名,作者,简介
您可以使用以下JSON形式来表示book对象:
{”bookID”:” 901001”,”bookName”:”海贼王”,”bookAuthor”:”尾田纯一郎”,” bookSynopsis”:”书简介内容”}
然后如果把这一字符串赋予一个JavaScript变量,那么就可以直接使用对象的任一属性了。
上面这是一种比较简单的json数据格式,在json数据里面属性可以值可以为另外一个对象如下:
当然数据不只这么一条所以我们现在需要数组:
取得json数据:
var bookid=book.book.id;(也可以这样取var bookid=book.[“book”].id; 取值方式可能会适用于不同的地方,所以要灵活运用)
var bookname=book.book.id;
实例:
现在我举一例子演示json在实际运用中发挥作用
其中会用药json数据的添加,修改,删除等方面的功能。
//下面的操作中可能需要这三个函数我先放到这
//转换为json
function $parseJson(str) {
try{
eval('var obj='+str);
return obj;
}catch(e){
return null;
}
}
//数组转换为字符串
function $ArrayToString(arr)
{
var separator = ",";//separator为分隔符
for(var i=0;i
arr=$toJsonString(arr);
}
return arr.join(separator);
}
//json转换为字符串
function $toJsonString(obj){
var isArray = obj instanceof Array;
var r = [];
for(var i in obj){
var value = obj;
if(typeof value == 'string'){
value = '"' + value + '"';
}else if(value != null && typeof value == 'object'){
value = $toJsonString(value);
}
r.push((isArray?'':i+':')+value);
}
if(isArray){
return '['+r.join(',')+']';
}else{
return '{'+r.join(',')+'}';
}
}
//添加节点
var addjson=[{”book”:{”id”:”901001”,”name”:”海贼王”},”author”:{”id”:”901”,”name”:”尾田纯一郎”},” bookSynopsis”:”书简介内容”},
{”book”:{”id”:”901002”,”name”:”那年夏天”},”author”:{”id”:”901”,”name”:”尾田纯一郎”},” bookSynopsis”:”书简介内容”}];
//添加到指定节点
//splice(index,howmany,element1,.....,elementX)
//index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
//howmany 必需。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
//element1 可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。
//elementX 可选。可向数组添加若干元素。
addjson.splice(2,0, {book:{“id”:”902001”,”name”:”xface应用开发宝典”},”author”:{“id”:”902”,”xface应用 开发小组”},”bookSynopsis”:”xface应用开发书简介” });//这是重点
alert(addjson.book.name);
//输出:xface应用开发宝典
//添加到最后
addjson.push({book: {“id”:”903001”,”name”:”xface应用开发宝典2”},”author”:{“id”:”902”,”xface应用开发小 组”},”bookSynopsis”:”xface应用开发书简介” });//这是重点
alert(addjson[addjson.length-1] .book.name);
//输出:xface应用开发宝典2
//修改
//修改基本上我觉得没有什么特殊操作
var uptatejson=[{”book”:{”id”:”901001”,”name”:”海贼王”},”author”:{”id”:”901”,”name”:”尾田纯一郎”},” bookSynopsis”:”书简介内容”},
{”book”:{”id”:”901002”,”name”:”那年夏天”},”author”:{”id”:”901”,”name”:”尾田纯一郎”},” bookSynopsis”:”书简介内容”}];
uptatejson.book={“id”:”901003”,”name”:”诛仙”};
alert(uptatejson. book.id);
//输出结果为901003
//这是json删除指定的元素
var json=[{”book”:{”id”:”901001”,”name”:”海贼王”},”author”:{”id”:”901”,”name”:”尾田纯一郎”},” bookSynopsis”:”书简介内容”},
{”book”:{”id”:”901002”,”name”:”那年夏天”},”author”:{”id”:”901”,”name”:”尾田纯一郎”},” bookSynopsis”:”书简介内容”}];
delete json;//删除指定的标识的数据
//根据上面的类推的话
var json2=[{”book”:{”id”:”901001”,”name”:”海贼王”},”author”:{”id”:”901”,”name”:”尾田纯一郎”},” bookSynopsis”:”书简介内容”},
{”book”:{”id”:”901002”,”name”:”那年夏天”},”author”:{”id”:”901”,”name”:”尾田纯一郎”},” bookSynopsis”:”书简介内容”}];
delete json2. book; //删除指定的标识的