美文网首页
JSON(8/31)

JSON(8/31)

作者: BaibaiWang | 来源:发表于2017-09-01 07:17 被阅读0次
    JavaScript JSON
    • JSON 是用于存储和传输数据的格式。
    • JSON 通常用于服务端向网页传递数据 。

    JSON全称JavaScript Object Notation
    JSON是基于JavaScript的,是JavaScript的一个子集。JSON是用JavaScript语法来表示数据的一种轻量级语言。

    JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。
    文本可以被任何编程语言读取及作为数据格式传递。

    JSON 语法规则

    • 数据为 键/值 对。
      一个名称对应一个值.
      JSON 数据格式为 键/值 对,就像 JavaScript 对象属性。
      键/值对包括字段名称(在双引号中),后面一个冒号,然后是值:
    "name":"Runoob"
    
    • 数据由逗号分隔。
    • 大括号保存对象
      JSON 对象保存在大括号内.
      就像在 JavaScript 中, 对象可以保存多个 键/值 对:
    {"name":"Runoob", "url":"www.runoob.com"}
    
    • 方括号保存数组
      JSON 数组保存在中括号内。
      就像在 JavaScript 中, 数组可以包含对象:
    {"sites":[
        {"name":"Runoob", "url":"www.runoob.com"}, 
        {"name":"Google", "url":"www.google.com"},
        {"name":"Taobao", "url":"www.taobao.com"}
    ]}
    

    以上 JSON 语法定义了 sites 对象: 对象 "sites" 是一个数组,包含了三个对象。
    每个对象为站点的信息(网站名和网站地址)。

    在JavaScript中, 对于对象构造有两种方法:基于对象的完整写法,字面量表示法。前者:

    var obj = new Object();
    obj.title = "title1";
    obj.content = "content1";
    

    而与之对应的字面量表示法则写为:

    var obj = {
        title: "title1",
        content: "content1"
    };
    

    JSON基本就是字面量表示法的一个子集,除了强制要求键与字符串类型的值必须用双引号包起之外,它剔除了undefined、function等类型,也不包括浏览器内置对象类型(如Date、RegExp等),是基于文本的、比较纯粹的数据表示方法。

    XML, JSON对比:

    XML:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <article>
        <title>Article Title1</title>
        <content>content1</content>
      </article>
      <article>
        <title>Article Title2</title>
        <content>content2</content>
      </article>
    </root>
    

    JSON:

    {
      "article" : [
        {
          "title": "Article Title1",
          "content": "content1"
        },
        {
          "title": "Article Title2",
          "content": "content2"
        }
      ]
    }
    
    JSON 字符串转换为 JavaScript 对象

    通常我们从服务器中读取 JSON 数据(作为文件或作为 HttpRequest),并在网页中显示数据.

    JSON 文本格式在语法上与创建 JavaScript 对象的代码相同,由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象

    使用字符串作为输入进行演示:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>
    <h2>从 JSON 字符串中创建对象</h2>
    <p>
    网站名: <span id="name"></span><br> 
    网站地址: <span id="url"></span><br> 
    </p> 
    <script>
    var txt = '{ "sites" : [' +
    '{ "name":"菜鸟教程" , "url":"www.runoob.com" },' +
    '{ "name":"google" , "url":"www.google.com" },' +
    '{ "name":"微博" , "url":"www.weibo.com" } ]}';
        
    //eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,
    //  然后生成 JavaScript 对象。
    //  必须把文本包围在括号中,这样才能避免语法错误:
    var obj = eval ("(" + txt + ")");
    
    //使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:
    // obj = JSON.parse(txt);
    
    document.getElementById("name").innerHTML=obj.sites[0].name 
    document.getElementById("url").innerHTML=obj.sites[0].url 
    </script>
    </body>
    </html>
    

    JSON.parse()与 eval() 比较:

    <script>
    var value = 1;
    var jsonstr = '{"data1":"hello","data2":++value}';
    var data1 = eval('('+jsonstr+')');
    console.log(data1);//这时value值为2
    var data2=JSON.parse(jsonstr);
    console.log(data2);//报错
    </script>
    

    eval()在解析字符串时,会执行该字符串中的代码(这样的后果是相当恶劣的)

    相关文章

      网友评论

          本文标题:JSON(8/31)

          本文链接:https://www.haomeiwen.com/subject/uakhjxtx.html