826

导航

学习运用json

早在一开始入职是经理就让我学习一下json,那时懵懵懂懂,不知道感觉还很高端,其实确实挺高端,因为json是javascript 一个孩子,只是老外喜欢简单,起了个简单的名字

从w3c上直接copy一下它的名字和简单描述吧,我觉得挺清楚的,

JSON:JavaScript 对象表示法(JavaScript Object Notation)。

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。

JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"妈妈说" : "你赶紧去睡觉明天继续学习"

这很容易理解,等价于这条 JavaScript 语句:

妈妈= "你赶紧去睡觉明天继续学习"

JSON 值

JSON 值可以是:(我刚开始以为json值只能为字符串呢,一看明白了,都有,看来确实挺强大)

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

JSON 对象

JSON 对象在花括号中书写:

对象可以包含多个名称/值对:

{ "妈妈说":"你赶紧去睡觉明天继续学习" , "孩子回":"好的妈妈" }

这一点也容易理解,与这条 JavaScript 语句等价:

妈妈= "你赶紧去睡觉明天继续学习"
孩子回= "好的"

JSON 数组

JSON 数组在方括号中书写:

数组可包含多个对象:

{
"孩子同": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。

JSON 使用 JavaScript 语法

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

例子

var 一个简单对话= [
{ "妈妈说":"去买菜去" , "孩子回":"我不去" },
{ "妈妈说":"去卖菜" , "lastName":"我不去" },
{ "妈妈说":"睡觉去" , "lastName": "我去" }
];

可以像这样访问 JavaScript 对象数组中的第一项:

一个简单对话[0].孩子回;

返回的内容是:

我不去

可以像这样修改数据:

一个简单对话[0].孩子回= "我去";

我写一个简单实例,写的幽默点儿,希望你能感兴趣,并理解它的美丽动人之处,come on 让json小姐勾引你吧

{--这是我的第一门,要想认识json小美女,要记得先敲门哦。
"名字"-- 一个双引号是json小美女的头发,你们知道的头发可以有无数根的
  : 冒号是 json小美女 键值对的 分割符,简单说就是json小美女头发 要说的话,说话前要加个冒号,就跟你写 妈妈说:"一样"
  [--这个方括号是json小美女说的话可以是一串,就是萝莉啰唆一种类型的话,就放到[]这里面了,里面的内容 还是同上面 "妈妈":"一样一样的"     { "妈妈说":"去买菜去" , "孩子说":"我不去" },     { "妈妈说":"去卖菜去" , "lastName":"我不去" },     { "妈妈说":"去睡吧孩子" , "lastName":"我去" }   ]--这个是对应上面的结束的方括号记得写的时候成对写,不要丢掉她,否则,json小美女会跟你闹脾气的。 }--json小美女就是这么单纯,你要好好待她,她定会好好回馈你的哦

JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。(我目前就是在java中运用,其它的还很多,asp,php。。,。而且都有对应的封装类,我知道java有后面会写到)

下面还是copy w3c里的吧(他们写的很规范的)

JSON - 转换为 JavaScript 对象

JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。

由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

关于eval()函数用到的并不多,我基本上就没用过,也是刚刚看到

定义和用法

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

语法

eval(string)
参数描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

返回值

通过计算 string 得到的值(如果有的话)。

说明

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

抛出

如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。

如果非法调用 eval(),则抛出 EvalError 异常。

如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

 

类似 XML

  • JSON 是纯文本
  • JSON 具有“自我描述性”(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

相比 XML 的不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的 JavaScript eval() 方法进行解析
  • 使用数组
  • 不使用保留字

为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:(当你用到xml时候就会知道这点了)

使用 XML

  • 读取 XML 文档
  • 使用 XML DOM 来循环遍历文档
  • 读取值并存储在变量中

使用 JSON

  • 读取 JSON 字符串
  • 用 eval() 处理 JSON 字符串

 

JSON 文件(就是写一个单独json页面即文件)

  • JSON 文件的文件类型是 ".json"
  • JSON 文本的 MIME 类型是 "application/json"

 

下面继续(就不做无聊的解释了,我想通过上面的介绍你应该明白她的基本用法了,下面的例子看看就明白了,最好要实践一下,推荐朋友们去w3cschool学习web基础很不错的一个规范网站)

把 JSON 文本转换为 JavaScript 对象

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

为了更简单地为您讲解,我们使用字符串作为输入进行演示(而不是文件)。

JSON 实例 - 来自字符串的对象

创建包含 JSON 语法的 JavaScript 字符串:

var txt = '{ "employees" : [' +
'{ "firstName":"Bill" , "lastName":"Gates" },' +
'{ "firstName":"George" , "lastName":"Bush" },' +
'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

var obj = eval ("(" + txt + ")");

在网页中使用 JavaScript 对象:

例子

<p>
First Name: <span id="fname"></span><br />
Last Name: <span id="lname"></span><br />
</p>

<script type="text/javascript">
document.getElementById("fname").innerHTML = obj.employees[1].firstName
document.getElementById("lname").innerHTML = obj.employees[1].lastName
</script>

 

 

 

 

posted on 2014-05-19 22:55  826  阅读(256)  评论(0编辑  收藏  举报