zoukankan      html  css  js  c++  java
  • 使用JSON.parse()转化成json对象需要注意的地方

    转载@https://blog.csdn.net/shadow_zed

    相信大部分人都知道或者去百度检索都会得到将js中的字符串转化成json对象常见的3种方法

    举例:

    var str = '{"name":"小明","age":18}';

    将字符串转化json对象:

    1. var json = JSON.parse(str);

    2. var json = eval("(" + str + ")");

    3. var json = (new Function("return " + str))();

    通过console.log()将json打印到控制台,不管是使用以上3种哪一种方法,都能在chrome控制台看到成功转化的结果:

    使用JSON.parse()转化成json对象需要注意的地方

    但是如果使用JSON.parse()方法来转化json对象,需要注意的坑点是什么?

    1.字符串的数据格式

    以上举例 str = '{"name":"小明","age":18}'; 属性name和age都用双引号引住,

    有的人可能会习惯写成对象形式的字符串,如:str = '{name:"小明",age:18}';

    结果使用JSON.parse()来转化会报错,因为使用JSON.parse需严格遵守JSON规范。

    使用JSON.parse()转化成json对象需要注意的地方

    使用JSON.parse()转化成json对象需要注意的地方

    2.单引号与双引号

    我们看到一开始的举例中 var str = '{"name":"小明","age":18}'; 使用单引号来套双引号,如果反过来写呢,如:var str = "{'name':'小明', 'age':18}";(相信也不少人习惯用双引号套单引号)

    结果使用JSON.parse()来转化也会报错

    使用JSON.parse()转化成json对象需要注意的地方

    使用JSON.parse()转化成json对象需要注意的地方

    最后总结来说,如果使用JSON.parse()方法来转化成json对象的数据格式的话,需要注意的是被转化的字符串里面的属性要使用引号,并且总体是单引号套双引号的方式。

    当然,如果你使用eval()或者new Function()的方式来转化,那就完全可以忽略上述的这两点需要注意的地方~( ̄▽ ̄~)(~ ̄▽ ̄)~哈哈

    附:

    eval() 函数可将字符串转换为代码执行,并返回一个或多个值

    eval调用时,实例为eval( "( javascript代码 )" )

    var str = "function(){alert('a');}“;

    str = eval("("+str+")");

    str();

    eval()的返回值

    eval()的返回值遵循以下规则:

    1.如果eval()的参数不是字符串,那么eval()将直接返回参数。

    2.如果eval()的参数是字符串,那么eval()将这个字符串解析成代码后进行执行,并返回最后一行代码执行的结果。

    3.如果字符串无法解析成合法的代码,eval()将抛出SyntaxError错误。

  • 相关阅读:
    Unity 3(一):简介与示例
    MongoDB以Windows Service运行
    动态SQL中变量赋值
    网站发布IIS后堆栈追踪无法获取出错的行号
    GridView Postback后出错Operation is not valid due to the current state of the object.
    Visual Studio 2010 SP1 在线安装后,找到缓存在本地的临时文件以便下次离线安装
    SQL Server 问题之 排序规则(collation)冲突
    IIS 问题集锦
    linux下安装mysql(ubuntu0.16.04.1)
    apt-get update 系列作用
  • 原文地址:https://www.cnblogs.com/yangsanluo/p/14210325.html
Copyright © 2011-2022 走看看