Chinaunix首页 | 论坛 | 博客
  • 博客访问: 611514
  • 博文数量: 103
  • 博客积分: 2269
  • 博客等级: 大尉
  • 技术积分: 1108
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-23 16:32
文章分类

全部博文(103)

文章存档

2012年(61)

2011年(42)

分类: Java

2012-06-27 14:13:26

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。



JSON建构有两种结构:   
1. “名称/值”对的集合(A collection of name/value pairs)。
    不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表 (hash table),有键列表(keyed list),或者关联数组 (associative array)。   
2.值的有序列表(An ordered list of values)。
    在大部分语言中,它被理解为数组(array)

JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。


最简单的形式
表示"名称 / 值对":{ "firstName": "Jack" }
稍复杂:
var people =
{ "programmers": [
   { "firstName": "Brett", "lastName":"McLaughlin" },
   { "firstName": "Jason", "lastName":"Hunter" },
   { "firstName": "Elliotte", "lastName":"Harold" }
 ],   
  "authors": [   
     { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
     { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
     { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
 ],   
  "musicians": [   
     { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
     { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }   
  ]
}

数据访问:
people.programmers[0].lastName;

数组索引是从零开始的。
javascript里面访问索引超过边界或者访问不存在的属性的时候都会提示 Undefined;
修改 JSON 数据同样轻松:
people.musicians[0].lastName = "Rachmaninov";
JavaScript
    JSON对象转换回字符串文本
       String newJSONtext = people.toJSONString();
    JavaScript对象转换为 JSON 文本
       String myObjectInJSON = myObject.toJSONString();
这就是 JSON 与本系列讨论的其他数据格式之间最大的差异。
如果使用 JSON,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。
对于其他数据格式,需要在原始数据和格式化数据之间进行转换。
即使使用 Document Object Model 这样的 API(提供了将自己的数据结构转换为文本的函数),也需要学习这个 API 并使用 API 的对象,而不是使用原生的 JavaScript 对象和语法。

如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。








阅读(964) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~