JSON

passtome的专栏

字号+ 作者:H5之家 来源:H5之家 2017-08-18 10:04 我要评论( )

Json简介:JSON 定义(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第

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; //删除指定的标识的

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Golang 的 JSON 使用小技巧

    Golang 的 JSON 使用小技巧

    2017-08-18 11:00

  • soapUI中GET方法的接口入参格式为json字符串,该怎样写入入参才

    soapUI中GET方法的接口入参格式为json字符串,该怎样写入入参才

    2017-08-16 16:07

  • 怎么将JSON字符串转换为.net对象?来

    怎么将JSON字符串转换为.net对象?来

    2017-08-16 12:00

  • Linux:Linux有问必答:如何修复fatal error: jsoncpp/json/json.

    Linux:Linux有问必答:如何修复fatal error: jsoncpp/json/json.

    2017-08-15 16:01

网友点评