json详解

<span style="font-family:SimSun;">
</span>
1 语法

1.1简介

     JSON(Javascript Object Notation,Javascript对象表示法)是Javascript的一个严格子集,利用了Javascript中的一些模式来表示结构化数据。
JSON可以表示三种类型的数据:简单值、对象和数组。

1.1.1 简单值

     JSON最简单的数据形式就是简单值,例如:5,"I am JSON"。布尔值和NULL也是有效的JSON值,
     注意:JSON字符串与javascript字符串区别在于:JSON 字符串必须使用双引号,单引号会导致语法错误。

1.1.2 对象

JSON中的对象与Javascript字面量稍微有些不同,Javascript字面量如下所示:
<span style="font-family:SimSun;font-size:14px;">   var student = {
       name : "police",
       phone : 110
   };</span>
也可以写成下面的样子:
<span style="font-family:SimSun;font-size:14px;">  var student = {
       "name" : "police",
       "phone" : 110
   };</span>
但是JSON中的对象要求必须给属性加上双引号(不能是单引号),而且末尾没有分号。
<span style="font-family:SimSun;font-size:14px;">  var student = {
       "name" : "police",
       "phone" : 110
   }</span>
JSON对象中没有变量的概念,属性的值可以是简单值,也可以是复杂的对象。

1.1.3 数组

JSON数组采用的是Javascript中的数组字面量形式,但JSON数组中同样没有变量和分号。例如
<span style="font-family:SimSun;font-size:14px;">["apple",5000,"phone"]</span>
JSON数组和对象结合起来可以构成更复杂数据集合,这也是最常用的形式。例如
<span style="font-family:SimSun;font-size:14px;">[
    {
         "name" : "ann",
         "phone" : "12222",
         "email" : ["sian","sohu"]
    },
    {
         "name" : "zhou",
         "phone" : "111110",
         "email" : ["163"]
    }
]</span>

2 解析与序列化

2.1 序列化

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

早期的JSON解析器基本上就是使用Javascript的eval()函数,可以把json数据结构解析为Javascript对象和数组。
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误.
例如:
var txt= '{ "employees" : [' +
<span style="white-space:pre">	</span>'{ "firstName":"Bill" , "lastName":"Gates" },' +
<span style="white-space:pre">	</span>'{ "firstName":"George" , "lastName":"Bush" },' +
<span style="white-space:pre">	</span>'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
var obj = eval ("(" + txt + ")");
alert(obj.employees[1].firstName);
ECMAScript 5 对解析JSON的行为进行了规范,定义了全局对象JSON。JSON对象有两个方法:stringify()和parse()。

这两个方法分别用于把JSON对象序列化为JSON字符串和把JSON字符串解析为原生的Javascript对象。例如:
var employee = {
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
<pre name="code" class="javascript">var txt = JSON.stringify(employee,);

 
   
  stringify()还可以接受另外两个参数:第一个参数是过滤器,可以是一个数组或函数;第二个参数是一个选项,表示是否在JSON字符串中保持缩进。 
 
例如:
var txt = JSON.stringify(employee,["firstName"]);
因此在返回的结果字符串中只包括firstName属性。

如果第二个参数是函数,形式有些变化。传入的函数接受两个参数:属性名和属性值。

例如:
var txt = JSON.stringify(employee,function  (key,value) {
	switch(key){
		case "firstName":
			return value;
		case "lastName":
			return "last";
		default:
			return "ann";
	}
});
第三个参数用于控制结果中的缩进和空白符。如果参数是一个数值,则表示每个级别所进的空格数,如果是一个字符串,则代替空格作为缩进字符。
var txt = JSON.stringify(employee,null,4) ;
var txt = JSON.stringify(employee,null,"-") ;
有时候stringify()方法不能满足对某些对象自定义序列化的需求,这时可以给对象定义toJSON()方法。
调用顺序:

2.2 解析

parse()函数用来把JSON字符串解析为Javascript对象,例如:
<span style="font-family:SimSun;font-size:14px;">var obj = JSON.parse(txt);</span>
parse()函数也可以接受另一个参数,该参数是一个函数,将在每个键值对上调用,对应于stringify()接受的替换函数,这个函数被称为还原函数。
例如:
<span style="font-family:SimSun;font-size:14px;">var obj = JSON..parse(txt,function  (key,value) {
	if (key == "firstName") 
	{
		return value;
	} 
	else
	{
		return "ann";
	}
});</span>







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
task.json 是 Visual Studio Code 编辑器中的一个配置文件,用于定义任务(Task)的相关信息,包括任务的命令、参数、工作目录、输入输出、启动配置等。通过 task.json 文件,可以方便地配置、管理和运行各种任务。 task.json 中的常用参数包括: - label:任务的标签,用于在任务列表中显示。 - type:任务的类型,可以是 "shell"、"process" 或 "npm" 等。 - command:执行任务的命令。 - args:执行任务命令的参数。 - problemMatcher:用于匹配命令输出中的错误信息,并在编辑器中显示错误提示。 - options:任务的额外选项,例如设置任务执行时的工作目录、环境变量等。 - presentation:任务在编辑器中的显示设置,例如是否在终端中显示执行输出。 任务可以通过任务列表或者快捷键进行运行。任务列表显示了所有的任务,可以选择性地运行某个任务。此外,还可以通过快捷键将任务与编辑器的某个功能进行关联,从而实现快速执行任务。 在 task.json 文件中,常见的任务配置包括: - 编译项目:通过配置编译器的命令和参数,可以在任务列表中快速编译代码。 - 运行测试:配置测试框架的命令和参数,可以方便地运行测试用例进行调试。 - 启动服务:通过配置启动服务的命令和参数,可以在任务列表中一键启动服务。 - 打包应用:配置打包工具的命令和参数,可以自动化生成可部署的应用程序。 总之,task.json 是 Visual Studio Code 编辑器中用于配置和管理任务的关键配置文件,通过它可以提高开发效率,简化操作,实现自动化和快速执行各种任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值