JSON学习笔记

原创 2016年06月02日 12:06:47


引言

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#Java、JavaScript、PerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON的五点语法

1.数组(Array)用方括号(”[]“)表示。

2.对象(Object)用大括号(“{}”)表示。

3.名称/值对(name/value)之间用冒号(“:”)隔开。

4.名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。

5.并列的数据之间用逗号(“,”)分隔。

JSON解析

解析,是指将符合JSON语法规则的字符串转换成对象的过程

不同的编程语言都提供了解析JSON字符串的方法,在这里主要讲解JavaScript中的解析方法,主要有三种:

--使用eval()

--使用JSON.parse()

--使用第三方库,例如jQuery等

1.eval()

eval()函数的参数是一个字符串,其作用是直接执行其中的JavaScript代码

eval()能够解析JSON字符串,从这里也可以看得出,JSON和JavaScript是高度嵌合的

但是,eval()现在已很少使用,其安全性相对较低

 <script type="text/javascript">
			var str='{"name":"Mike","age":22}';
			var obj=eval("("+str+")");
			console.log(obj.name);
			console.log(obj.age)
		</script>


2.JSON.parse()

现在绝大多数浏览器都支持JSON.parse(),是推荐使用的方式。如果输入了不符合规范的字符串,会报错。

JSON.parse()可以有第二个参数,是一个函数,此函数有两个参数:name和value,分别代表名称和值。当传入一个JSON字符串后,JSON的每一组名称/值对都要调用此函数。该函数有返回值,返回值将赋给当前的名称(name)。

利用第二个参数,可以在解析JSON字符串的同时对数据进行一些处理。

没有第二个参数的情况:

		<script type="text/javascript">
			var str='{"name":"Tom","age":26}';
			var obj=JSON.parse(str);
			console.log(obj.name);
			console.log(obj.age);
		</script>

有第二个参数的情况:

		<script type="text/javascript">
			var str='{"name":"Tom","age":26}';
			var obj=JSON.parse(str,fun);
			function fun(name,value){
				console.log(name+":"+value);
			}
		</script>

序列化

序列化,指将JavaScript值转换为JSON字符串的过程

JSON.stringify()能够将JavaScript值转化为JSON字符串。JSON.stringify()生成的字符串可以用JSON.parse()再还原成JavaScript值

JSON.stringify(value[,replacer[,space]])

value:必选参数。被变换的JavaScript值,一般是对象或数组

replacer:可以省略。有两种选择:函数或数组

-如果是函数,则每一组名称/值都会调用此函数,该函数返回一个值,作为名称的值变换到结果字符串中,如果返回undefined,则该成员被忽略

-如果是数组,则只有数组中存在的名称才能够被转换,且转换后顺序与数组中的值保持一致

space:可以省略。这是为了排版、方便阅读而存在的,可以在JSON字符串中添加空白或制表符等

首先来看value的用法

<script type="text/javascript">
	//obj是JavaScript对象
	var obj={
            name:"tom",
            age:33
            }
        console.log(obj);
        var jsonstr=JSON.stringify(obj);
        console.log(jsonstr);
</script>

添加replacer参数

以对象的形式:

		<script type="text/javascript">
			//obj是JavaScript对象
			var obj={
				name:"tom",
				age:33
			}
			console.log(obj);
			var jsonstr=JSON.stringify(obj,fun);
			function fun(name,value){
				if(name=='age')value=22;
				return value;
			}
			console.log(jsonstr);
		</script>

以数组的形式

		<script type="text/javascript">
			//obj是JavaScript对象
			var obj={
				a:1,
				b:2,
				c:3,
				d:4
			}
			console.log(obj);
			var jsonstr=JSON.stringify(obj,["a","b","c"]);
			//将数组中元素的顺序打乱
			var jsonstr1=JSON.stringify(obj,["c","b","a"]);
			console.log(jsonstr);
			console.log(jsonstr1);
		</script>

添加space参数

              <script type="text/javascript">
			//obj是JavaScript对象
			var obj={
				a:1,
				b:2,
				c:3,
				d:4
			}
			console.log(obj);
			//添加制表符\t
			var jsonstr=JSON.stringify(obj,["a","b","c"],"\t");
			//将数组中元素的顺序打乱
			var jsonstr1=JSON.stringify(obj,["c","b","a"],"\t");
			console.log(jsonstr);
			console.log(jsonstr1);
		</script>

JSON与XML相互转换

1.下载相关文件

-jQuery
-jquery.json2xml.js
-jquery.xml2json.js

2.XML字符串转换成JSON对象

$.xml2json(str);

		<script type="text/javascript">
		    //xml格式
			var str="<root>"+"<name>liu</name>"+"<age>24</age>"+"<friends>Alice</friends>"+"<friends>Gwen</friends>"+"</root>";
            console.log(str);
            //js对象形式
			var obj=$.xml2json(str);
			console.log(obj);
			//json格式
			var jsonstr=JSON.stringify(obj);
			console.log(jsonstr);
		</script>


3.JSON对象转换成XML字符串

$.json2xml(obj);

<script type="text/javascript">
        //json格式
	<var json='{"name":"Liu","age":24,"mother":{"name":"song","age":49}}';
        console.log(json);
        //js对象格式
        var str=JSON.parse(json);
        console.log(str);
        //xml格式
        var xml=$.json2xml(str);
        console.log(xml);
</script>









版权声明:本文为博主原创文章,未经博主允许不得转载。

json教程从入门到使用

json教程从入门到使用 一:入门 简介: JSON(JavaScriptObject Notation)、轻量级数据交换格式、非常适合于服务器与 JavaScript 的交互。 JSON两种格式: ...
  • chenghuaying
  • chenghuaying
  • 2013年10月25日 10:20
  • 15911

JSON详解

什么是JSON              JSON(JavaScript Object Notation http://www.json .org/json -zh.html ),是一种...
  • tianyazaiheruan
  • tianyazaiheruan
  • 2014年03月03日 16:47
  • 1249

JSON学习笔记

一、简介 中文官网:http://www.json.org/json-zh.html   JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON 使...
  • fanxiaobin577328725
  • fanxiaobin577328725
  • 2017年03月20日 17:29
  • 1080

JSON学习笔记

JSON:JavaScript对象表示法(JavaScript Object Notation),是存储和交换文本信息的语法。 JSON是轻量级的文本数据交换格式,独立于语言。对于 AJAX 应用程...
  • liuwengai
  • liuwengai
  • 2016年06月19日 15:45
  • 503

SimpleJSON

  • 2014年03月23日 17:28
  • 29KB
  • 下载

json

       XML——这种用于表示客户端与服务器间数据交换有效负载的格式,几乎已经成了Web services的同义词。然而,由于Ajax和REST技术的出现影响了应用程序架构,这迫使人们开始寻求`...
  • wangl517
  • wangl517
  • 2007年11月26日 16:59
  • 264

Jsoncpp 学习笔记

相关信息 源码网址 github : https://github.com/open-source-parsers/jsoncpp Git remote https://...
  • cchd0001
  • cchd0001
  • 2015年04月30日 15:10
  • 529

Json 学习笔记

在C++中使用Json http://www.codeproject.com/Articles/20027/JSON-Spirit-A-C-JSON-Parser-Generator-Impleme...
  • binglingshuang
  • binglingshuang
  • 2014年01月06日 15:52
  • 450

string to json

>>> import json >>> s = '{"skey":"val","ikey":10}' >>> jo = json.loads(s) >>> jo {'ikey': 10, 'skey'...
  • AAA3A12
  • AAA3A12
  • 2016年05月15日 15:33
  • 234

JSON

下述内存主要讲述了《JavaScript高级程序设计(第3版)》第20章关于“JSON”。 JSON是一种数据格式,不是一种编程语言。1. 语法JSON的语法可以表示三种类型的值: (1)简单值:可...
  • ligang2585116
  • ligang2585116
  • 2016年04月04日 11:22
  • 918
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSON学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)