• JSon和object literal 区别


    JSON格式及其简单,它只是数组和对象直接量的混合写法,看一个JSON字符串的例子:
    {"name": "value", "some": [1, 2, 3]}

    JSON和对象直接量在语法上的唯一区别是,合法的JSON属性名均用引号包含。而在对象直接量中,只有属性名是非法的标识符时采用引号包含比如,属性名中包含空格{"first name": "Dave"}

    在JSON字符串中,不能使用函数和正则表达式直接量。

    是不是JSON:

     {“name”: ”tonny”}

      上面的表示是JSON么,它可以是对象常量(Object Literal)也可以是JSON字符串,关键是看他在上下文中是怎么运用的。例如:

    var person='{ "name" : "tonny"}';
    //this is a json string

    var person={ "name" :"tonny" };
    //this is an object literal
    区别:

    JSON中:

      Key值必须用双引号表示,单引号都不行。所有的字符串都必须加上双引号

      Values可以是String、Number、Object、Array、true、false、null. No Function

      从以上啰嗦的一段可以看到,我一直在强调字符串。所以JSON只是一种表示成字符串的数据交换格式。有种说法将对象字面量(JavaScript Object Literals)叫做“JSON Objects”,他们仅仅是看上去相似而已,然而这样的叫法是错误的。

      然而,虽然对象字面量(JavaScript Object Literals)不可以叫做“JSON Objects“,单事实上存在JSON object,当然这和object literal完全是两码事了。

    javascript单引号 双引号没啥区别。

    var json1 = eval('(' + jsonStr + ')');
    var result;
    var i;
    for(i in json1)
    {
    result+=i+":"+json1[i]+"<br/>";
    }

    document.write('<br/>'+result);

    输出undefinedmykey:my value

    什么前面有undefined,因为定义时没有赋值,初值就是undefined

    改为 var result='';

     这种解析 JSON 格式字符串的简单实现存在安全问题,被插入的恶意 JSON 字符串(比如获取用户的 cookie 信息)可能被解析并执行。 可以使用一些经过验证的安全成熟的的解决方案

    这种解析 JSON 格式字符串的简单实现存在安全问题,被插入的恶意 JSON 字符串(比如获取用户的 cookie 信息)可能被解析并执行。 可以使用一些经过验证的安全成熟的的解决方案,例如 json2.js 中的 JSON.parse() jQuery.parseJSON()

    源自:http://www.cnblogs.com/TonnyGu/archive/2011/09/21/2184407.html

     更好的解析json的方式:引入json.js文件:

    var json2=JSON.parse(jsonStr);

    JSON.parse()方法相对应的是JSON.stringify()。它将对象或数组(或任何原始值)转换为JSON字符串。

    var dog = {
        name: "Fido",
        dob:new Date(),
        legs:[1,2,3,4]
    };
    
    var jsonstr = JSON.stringify(dog);
    
    // jsonstr is now:
    // {"name":"Fido","dob":"2010-04-11T22:36:22.436Z","legs":[1,2,3,4]}

    参考:https://github.com/jayli/javascript.patterns/blob/master/chapter3.markdown

  • 相关阅读:
    Redis的主从复制
    JVM之jps命令
    ThreadLocal源码分析
    ThreadLocal初体验
    Redis的逐出算法
    Redis的删除策略
    DagScheduler 和 TaskScheduler
    数据挖掘的数据预处理
    日志实时收集和计算的简单方案
    spark ml 的例子
  • 原文地址:https://www.cnblogs.com/youxin/p/2687924.html
Copyright © 2020-2023  润新知