JS 中的 JSON

JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。

在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范。

终于,在2002年的一天,道格拉斯·克罗克福特(Douglas Crockford)同学为了拯救深陷水深火热同时又被某几个巨型软件企业长期愚弄的软件工程师,发明了JSON这种超轻量级的数据交换格式。

道格拉斯同学长期担任雅虎的高级架构师,自然钟情于JavaScript。他设计的JSON实际上是JavaScript的一个子集。在JSON中,一共就这么几种数据类型:

  • number:和JavaScript的number完全一致;
  • boolean:就是JavaScript的truefalse
  • string:就是JavaScript的string
  • null:就是JavaScript的null
  • array:就是JavaScript的Array表示方式——[]
  • object:就是JavaScript的{ ... }表示方式。

以及上面的任意组合。

并且,JSON还定死了字符集必须是UTF-8,表示多语言就没有问题了。为了统一解析,JSON的字符串规定必须用双引号"",Object的键也必须用双引号""

由于JSON非常简单,很快就风靡Web世界,并且成为ECMA标准。几乎所有编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。

把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机。

如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。

序列化

让我们先把小明这个对象序列化成JSON格式的字符串:

 1 var xiaoming = {
 2     name: ‘小明‘,
 3     age: 14,
 4     gender: true,
 5     height: 1.65,
 6     grade: null,
 7     ‘middle-school‘: ‘\"W3C\" Middle School‘,
 8     skills: [‘JavaScript‘, ‘Java‘, ‘Python‘, ‘Lisp‘]
 9 };
10
11 JSON.stringify(xiaoming); // ‘{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}‘ 

要输出得好看一些,可以加上参数,按缩进输出:

1 JSON.stringify(xiaoming, null, ‘  ‘); 

结果:

 1 {
 2   "name": "小明",
 3   "age": 14,
 4   "gender": true,
 5   "height": 1.65,
 6   "grade": null,
 7   "middle-school": "\"W3C\" Middle School",
 8   "skills": [
 9    "JavaScript",
10    "Java",
11    "Python",
12    "Lisp"
13   ]
14 } 

第二个参数用于控制如何筛选对象的键值,如果我们只想输出指定的属性,可以传入Array

时间: 2024-11-25 16:41:48

JS 中的 JSON的相关文章

在js中 把 json对象转化为String对象的方法

方法1: 使用js的扩展方法 ** * json对象转字符串形式 */ function json2str(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return json2str(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } for (v

JS中:json对象数组按对象属性排序

var array = [ {name: 'a', phone: 1}, {name: 'b', phone: 5}, {name: 'd', phone: 3}, {name: 'c', phone: 4} ] array.sort(getSortFun('desc', 'phone')); function getSortFun(order, sortBy) { var ordAlpah = (order == 'asc') ? '>' : '<'; var sortFun = new F

js中的json对象详细介绍

JSON一种简单的数据格式,比xml更轻巧,在JavaScript中处理JSON数据不需要任何特殊的API或工具包,下面为大家详细介绍下js中的json对象, 1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包. JSON的规则很简单:对象是一个无序的“‘名称:值'对”集合.一个对象以“{”(左括号)开始,“}”(右括号)结束

js中定义json生成Tree树

这里说名的是js中生成json       arry是js中定义的json 树插件是jquery.ztree var param = { }; $.post("manager_treeList", param, function(data) { //循环列表 var setting = { view: { dblClickExpand: false, showLine: true, selectedMulti: false }, data: { simpleData: { enable

MVC中处理Json和JS中处理Json对象

事实上,MVC中已经很好的封装了Json,让我们很方便的进行操作,而不像JS中那么复杂了. MVC中: public JsonResult Test() { JsonResult json = new JsonResult { Data = new { Name = "zzl", Sex = "male", } }; return Json(json); }   public JsonResult TestList() { List<User> user

js中把JSON字符串转换成JSON对象最好的方法

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用jQuery的each方法来遍历 用jQuery解析JSON数据的方法,作为jQuery异步请求的传输对象,jQuery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先

js中的json对象

1.JSON(JavaScript Object  Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不须要不论什么特殊的API或工具包. JSON的规则非常easy:对象是一个无序的"'名称:值'对"集合.一个对象以"{"(左括号)開始,"}"(右括号)结束.每一个"名称"后跟一个":"(冒号):"'名称

js中解析json时候的eval和$.parseJSON()的区别以及JSON.stringify()

1.第一个区别是:安全性 json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?      JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的 如: var str = 'alert(1000.toString())'; eval(str); JSON.parse(str);  用eval可以解析,并

关于JS中的JSON

昨天按老大的要求,制作一功能,里面有一个需要从jsp页面封装参数的地方,如下 之前我自己写的时候,每个value值,我没有给他们加双引号(单引号),然后界面一直出不来,而且也不报错,在这个一块花费了很长的时间,老大看不下去了,来到我这看了下代码,一下子就指出这说"你这value怎么没有加双引号啊,这样js会将它们当做一个变量,而不是字符串对象,那些数字可以不用加,但是一些字符串需要加双引号才行!!!"加上双引号之后,界面立马就出来了....果然是老大,在这,我也注意到了加不加双引号在j

js 中读取JSON的方法探讨

方法一:函数构造定义法返回 var strJSON = "{name:'json name'}";  //得到的JSONvar obj = new Function("return" + strJSON)()  ;//转换后的JSON对象alert(obj.name);   //json name 方法二:js中著名的eval函数   //ie8及以下 无法使用var strJSON = "{name:'json name'}";//得到的JSO