浅谈JSON中stringify 函数、toJosn函数和parse函数

 更新时间:2015年01月26日 16:37:37   投稿:hebedich  
这篇文章主要介绍了浅谈JSON中stringify 函数、toJosn函数和parse函数,需要的朋友可以参考下

JSON.stringify 函数 (JavaScript)

语法:JSON.stringify(value [, replacer] [, space])

将 JavaScript 值转换为 JavaScript 对象表示法 (Json) 字符串。

复制代码 代码如下:

value
必需。 要转换的 JavaScript 值(通常为对象或数组)。
replacer
可选。 用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。 使用返回值而不是原始值。 如果此函数返回 undefined,则排除成员。 根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。 成员的转换顺序与键在数组中的顺序一样。 当 value 参数也为数组时,将忽略 replacer 数组。
space
可选。 向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。
如果省略 space,则将生成返回值文本,而没有任何额外空格。
如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。
如果 space 是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。
如果 space 是长度大于 10 个字符的字符串,则使用前 10 个字符。

如果 value 具有 toJSON 方法,则 JSON.stringify 函数将使用该方法的返回值。 如果 toJSON 方法的返回值为 undefined,则不转换成员。 这使对象能够确定自己的 JSON 表示形式。

将不会转换不具有 JSON 表示形式的值,例如 undefined。 在对象中,将丢弃这些值。 在数组中,会将这些值替换为 null。

执行顺序

在序列化过程中,如果 value 参数对应有 toJSON 方法,则 JSON.stringify 将首先调用 toJSON 方法。 如果该方法不存在,则使用原始值。 接下来,如果提供 replacer 参数,则该值(原始值或 toJSON 返回值)将替换为 replacer 参数的返回值。 最后,根据可选 space 参数向该值添加空格以生成最终的 JSON 文本。

此示例使用 JSON.stringify 将 contact 对象转换为 JSON 文本。 定义 memberfilter 数组以便只转换surname 和 phone 成员。 省略 firstname 成员。

复制代码 代码如下:

var contact = new Object();
contact.firstname = "Jesper";
contact.surname = "Aaberg";
contact.phone = ["555-0100", "555-0120"];
var memberfilter = new Array();
memberfilter[0] = "surname";
memberfilter[1] = "phone";
var jsonText = JSON.stringify(contact, memberfilter, "\t");
document.write(jsonText);
// Output:
// { "surname": "Aaberg", "phone": [ "555-0100", "555-0120" ] }

toJSON 方法 (Date) (JavaScript)

语法:objectname.toJSON()

objectname

必需。 需要进行 JSON 序列化的对象。

toJSON 方法是 Date JavaScript 对象的内置成员。 它返回 UTC 时区的 ISO 格式日期字符串(由后缀 Z 表示)。

以下示例使用 toJSON 方法将大写的字符串成员值序列化。 在调用 JSON.stringify 时调用 toJSON 方法。

复制代码 代码如下:

JavaScript
var contact = new Object();
contact.firstname = "Jesper";
contact.surname = "Aaberg";
contact.phone = ["555-0100", "555-0120"];
contact.toJSON = function(key)
 {
    var replacement = new Object();
    for (var val in this)
    {
        if (typeof (this[val]) === 'string')
            replacement[val] = this[val].toUpperCase();
        else
            replacement[val] = this[val]
    }
    return replacement;
};
var jsonText = JSON.stringify(contact);
/* The value of jsonText is:
'{"firstname":"JESPER","surname":"AABERG","phone":["555-0100","555-0120"]}'
*/

JSON.parse 函数 (JavaScript)

将 JavaScript 对象表示法 (JSON) 字符串转换为对象

语法:JSON.parse(text [, reviver])

复制代码 代码如下:

text
必需。 一个有效的 JSON 字符串。
reviver
可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况:
如果 reviver 返回一个有效值,则成员值将替换为转换后的值。
如果 reviver 返回它接收的相同值,则不修改成员值。
如果 reviver 返回 null 或 undefined,则删除成员。

以下示例使用 JSON.parse 将 JSON 字符串转换成对象。

复制代码 代码如下:

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
document.write(contact.surname + ", " + contact.firstname);
// Output: Aaberg, Jesper

以下示例演示了如何使用 JSON.stringify 将数组转换成 JSON 字符串,然后使用 JSON.parse 将该字符串重新转换成数组。

复制代码 代码如下:

var arr = ["a", "b", "c"];
var str = JSON.stringify(arr);
document.write(str);
document.write ("<br/>");
var newArr = JSON.parse(str);
while (newArr.length > 0) {
    document.write(newArr.pop() + "<br/>");
}
// Output:
// ["a","b","c"]
// c
// b
// a

相关文章

  • 如何实现json数据可视化详解

    如何实现json数据可视化详解

    最近在工作中开发一个内部功能时碰到的一个需求,要把json数据在页面上展示出来,平时浏览器会安装jsonView这样的扩展来看json数据,但是程序要用到的话该怎么办呢?今天在网上搜索的时候,发现了这个小技巧,分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧
    2016-11-11
  • JavaScript 创建对象

    JavaScript 创建对象

    JSON方式/对象直接量 等多种方法。大家可以快速的掌握js对象的建立。
    2009-07-07
  • JSON 客户端和服务器端的格式转换

    JSON 客户端和服务器端的格式转换

    JSON是JavaScript Object Notation的缩写。JSON是个轻量级的用于服务器端和客户端交换数据的数据格式。它经常会用在ajax应用上,是因为它是基于ajax对象的格式定义出来的。
    2009-08-08
  • JSON.stringify 语法实例讲解

    JSON.stringify 语法实例讲解

    可能有些人对系列化这个词过敏,我的理解很简单。就是说把原来是对象的类型转换成字符串类型(或者更确切的说是json类型的)。就这么简单。打个比方说,你有一个类,那么你可以通过这个方法转换成相应的json类型的
    2012-03-03
  • Jquery+asp.net后台数据传到前台js进行解析的方法

    Jquery+asp.net后台数据传到前台js进行解析的方法

    我们经常用jquery读取后台数据,后台返回数据。后台数据格式就有很多了,但是js里面没有什么类型之分
    2014-05-05
  • json的定义、标准格式及json字符串检验

    json的定义、标准格式及json字符串检验

    今天分享和总结一些json的基本定义、格式、字符串的格式,以及在做测试的时候使用json时做一些简单的校验
    2014-05-05
  • JSON.parse 数据不完整的解决方法

    JSON.parse 数据不完整的解决方法

    本文主要介绍了JSON.parse 数据不完整的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • JSON与XML优缺点对比分析

    JSON与XML优缺点对比分析

    本文从各个方面向大家对比展示了json和xml的优缺点,十分的全面细致,有需要的小伙伴可以参考下。
    2015-07-07
  • javascript json 新手入门文档

    javascript json 新手入门文档

    在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地在应用程序中移动数据和对象。
    2009-12-12

最新评论