JSON.parse 函数
JavaScript
JSON.parse 函数 (JavaScript)

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

JSON.parse(text [, reviver])
参数

text

必需。 一个有效的 JSON 字符串。

reviver

可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况:

  • 如果 reviver 返回一个有效值,则成员值将替换为转换后的值。

  • 如果 reviver 返回它接收的相同值,则不修改成员值。

  • 如果 reviver 返回 null 或 undefined,则删除成员。

返回值

一个对象或数组。

异常

如果此函数引发 JavaScript 分析器错误(如“SCRIPT1014:无效字符”),则输入文本将不遵循 JSON 语法。 若要更正此错误,请执行下列操作之一:

  • 修改 text 参数以遵循 JSON 语法。 有关更多信息,请参见 JSON 对象的 BNF syntax notation(BNF 语法表示法)。

  • 确保通过 JSON 兼容的实现对文本参数进行序列化,例如 JSON.stringify

示例

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

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

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

  1. var arr = ["a", "b", "c"];
  2. var str = JSON.stringify(arr);
  3. document.write(str);
  4. document.write ("<br/>");
  5. var newArr = JSON.parse(str);
  6. while (newArr.length > 0) {
  7. document.write(newArr.pop() + "<br/>");
  8. }
  9. // Output:
  10. var arr = ["a", "b", "c"];
  11. var str = JSON.stringify(arr);
  12. document.write(str);
  13. document.write ("<br/>");
  14. var newArr = JSON.parse(str);
  15. while (newArr.length > 0) {
  16. document.write(newArr.pop() + "<br/>");
  17. }
  18. // Output:
  19. ["a","b","c"]
  20. c
  21. b
  22. a

reviver 函数通常用于将国际标准化组织 (ISO) 日期字符串的 JSON 表示形式转换为协调世界时 (UTC) 格式 Date 对象。

此示例使用 JSON.parse 来反序列化 ISO 格式的日期字符串。dateReviver函数为格式为 ISO 日期字符串的成员返回Date对象。

  1. var jsontext = '{ "hiredate": "2008-01-01T12:00:00Z", "birthdate": "2008-12-25T12:00:00Z" }';
  2. var dates = JSON.parse(jsontext, dateReviver);
  3. document.write(dates.birthdate.toUTCString());
  4. function dateReviver(key, value) {
  5. var a;
  6. if (typeof value === 'string') {
  7. a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
  8. if (a) {
  9. return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
  10. +a[5], +a[6]));
  11. }
  12. }
  13. return value;
  14. };
  15. // Output:
  16. // Thu, 25 Dec 2008 12:00:00 UTC
要求

在以下文档模式中受到支持:Internet Explorer 8 标准、Internet Explorer 9 标准、Internet Explorer 10 标准、Internet Explorer 11 标准。Windows 应用商店 应用程序中也支持此项。请参阅 版本信息

在以下文档模式中不受支持:Quirks、Internet Explorer 6 标准模式、Internet Explorer 7 标准模式。

请参见

参考

 
 
 
 

JSON.parse 解析字符串出错的解决方法发布

程序中很多数据是动态拼接而成的json数据,最近在用json的时候老是现JSON.parse错误

经查,原来是json数据的格式要求非常严格,属性名称必须是用双引号“”括起来。

复制代码 代码如下: var a=JSON.parse('{"a":"aaaaa"}');//正确 var a=JSON.parse("{'a':'aaaaa'}");//错误

详细出处参考:http://www.jb51.net/article/24175.htm

JSON.parse 函数的更多相关文章

  1. 浅谈JSON.stringify 函数与toJosn函数和Json.parse函数

    JSON.stringify 函数 (JavaScript) 语法:JSON.stringify(value [, replacer] [, space]) 将 JavaScript 值转换为 Jav ...

  2. JSON.parse 函数应用 (复制备忘)

    JSON.parse 函数 JSON.parse 函数 (JavaScript) 将 JavaScript 对象表示法 (JSON) 字符串转换为对象. 语法 JSON.parse(text [, r ...

  3. JavaScript -- JSON.parse 函数 和 JSON.stringify 函数

    JavaScript -- JSON.parse 函数 和 JSON.stringify 函数 1. JSON.parse 函数: 使用 JSON.parse 可将 JSON 字符串转换成对象. &l ...

  4. JSON对象和JSON字符串以及JSON.parse 函数的使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 浅谈JSON.parse()、JSON.stringify()和eval()的作用

    (1)JSON.parse 函数 var json = '{"name":"GDT","age":23,"University&q ...

  6. Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...

  7. Js JSON.stringify()与JSON.parse()与eval()详解及使用案例

    (1)JSON.parse函数 作用:将json字符串转换成json对象. 语法:JSON. parse(text[,reviver]). 参数:text  必须:一个有效的json字符串. revi ...

  8. JSON.stringify和JSON.parse的使用

    JSON.stringify 函数 (JavaScript)将 JavaScript 值转换为 JavaScript 对象表示法 (Json) 字符串.JSON.stringify(value [, ...

  9. JSON.parse()——json字符串转JS

    JSON 通常用于与服务端交换数据. 在接收服务器数据时一般是字符串. 我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象. 语法 JSON.parse(text[, ...

随机推荐

  1. HDU 多校1.9

  2. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals )D. Innokenty and a Football League(2-sat)

    D. Innokenty and a Football League time limit per test 2 seconds memory limit per test 256 megabytes ...

  3. 初识.NET Core

    dotnet new console dotnet new web dotnet new webapi dotnet run dotnet build -r win-x64 dotnet publis ...

  4. luogu P3368 【模板】树状数组 2

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  5. Codeforces 920 F SUM and REPLACE

    Dicription Let D(x) be the number of positive divisors of a positive integer x. For example, D(2) =  ...

  6. POJ 3622 Gourmet Grazers(贪心)

    [题目链接] http://poj.org/problem?id=3622 [题目大意] 给出一些物品拥有两个属性值,价格和精美程度 给出一些需求表示要求获得的物品两个属性值的两种属性下界, 一个物品 ...

  7. (转)MOMO的Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)

    http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不 ...

  8. Problem W: 零起点学算法21——求平均值

    #include<stdio.h> int main() { int a,b,c; scanf("%d %d %d",&a,&b,&c); pr ...

  9. javolution-core-java-6.1.0.jar 的使用

    官方网址:http://javolution.org/apidocs/javolution/io/Struct.html 第一步:导包 第二步:创建继承的结构体 结构体定义如下所示: public c ...

  10. JNI之数据类型

    1. JNIEnv 作用 JNIEnv 概念 : 是一个线程相关的结构体, 该结构体代表了 Java 在本线程的运行环境 ; JNIEnv 与 JavaVM : 注意区分这两个概念; -- JavaV ...