js解析与序列化json数据(一)json.stringify()的基本用法

JavaScript030

js解析与序列化json数据(一)json.stringify()的基本用法,第1张

早期的JSON解析器基本上就是使用JavaScript的eval()函数。由于JSON是JavaScript语法的自己,因此eval()函数可以解析、解释并返回JavaScript的对象和数组。

ECMAScript

5对解析JSON的行为进行了规范,定义了全局对象JSON。

JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript。例如:

新建一个HTML:代码如下:

复制代码

代码如下:

<html>

<head>

<title></title>

<script

type="text/javascript">

function

init()

{

var

book={

title:"JavaScript高级程序设计",

authors:[

"Nicholas

C.

Zakas"

],

edition:3,

year:2011

}

var

jsonBook=JSON.stringify(book)

var

objectBook=JSON.parse(jsonBook)

var

title=objectBook.title}

</script>

</head>

<body>

<input

type="button"

onclick="init()"

value="测试"

/>

</body>

</html>

默认情况下,JSON.stringify()输出的JSON字符串不包含任何空字符或缩进,因此保存在jsonBook中的字符串如下所示:

复制代码

代码如下:

{"title":"JavaScript高级程序设计","authors":["Nicholas

C.

Zakas"],"edition":3,"year":2011}

在序列化JavaScript对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为undefined的任何属性也都会被跳过。结果中最终都是值为有效JSON数据类型的实例属性。

注意,虽然book与objectBook具有相同的属性,但它们是两个独立的、没有任何关系的对象。如果传给JSON.parse()的字符串不是有效的JSON,该方法会抛出错误。

1、利用事实函数eval()()例:<script>var str="3+2"document.write(eval(str))</script>输出结果为52、parseInt()系列函数转换为数字格式,然后通过switch语法筛选是哪种运算。 个人建议eval()函数,返回值则是运算结果,多重运算也可行。

JS是解释执行的,即读取一个语句就执行一个。以前的严格JS是以分号为语句的分隔符,但现在一些浏览器已经接受以换行符为分隔符(似乎是很多人喜欢用基于对象的编程了,而在JS中写对象的函数是需要加分号的,所以很多人都爱忘)。

JS本身只提供语法解析与少部分内部函数支持,其他的均由宿主支持。比如在网页JS中的window, document, navigator等对象,均是由浏览器提供基于其它语言的代码,这些代码通常被隐藏,但很大程度上决定了JS的运行效率。如果你有兴趣,打开Chrome,按F12,调处Console,然后输alert(注意没有()),你就会发现[native code]这个东西。