zoukankan      html  css  js  c++  java
  • JSON与JS的区别以及转换

      JSON是什么?(JSON和JavaScript对象有什么区别?)如何把JS对象转化为JSON字符串,又如何把JSON字符串转化为JavaScript对象?

      JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式, 这意味着在JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。JSON的规则很简单: 对象是一个无序的“名称/值”对集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“名称/值”对之间 使用“,”(逗号)分隔。

      它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号

    可以这么说:JSON对象就是一种严格的JS对象,但是JS对象不一定是JSON对象。(JS对象的键可以带单引号,双引号或者不带引号,JSON键也必须带双引号)。

         JSON与JS转换说的是JSON字符串与JSON对象(也就是JS对象)的转换。

         JSON字符串通过eval可以转换为JSON对象(也就是一种JS对象)。

         JSON字符串将JSON对象装成字符串:     '{"width":100,"height":200,"name":"rose"}'

    JSON只是一种数据格式(或者叫数据形式);

    <script>
    var obj2={};//这只是JS对象
    var obj3={100,height:200};/*这跟JSON就更不沾边了,只是JS的 对象 */
    var obj4={'width':100,'height':200};/*这跟JSON就更不沾边了,只是JS的对象 */
    var obj5={"width":100,"height":200,"name":"rose"}; /*我们可以把这个称做:JSON格式的JavaScript对象 */
    var str1='{"width":100,"height":200,"name":"rose"}';/*我们可以把这个称做:JSON格式的字符串 */
    var a=[
     {"width":100,"height":200,"name":"rose"},
     {"width":100,"height":200,"name":"rose"},
     {"width":100,"height":200,"name":"rose"},
     ];
     /*这个叫JSON格式的数组,是JSON的稍复杂一点的形式 */
    var str2='['+
     '{"width":100,"height":200,"name":"rose"},'+
     '{"width":100,"height":200,"name":"rose"},'+
     '{"width":100,"height":200,"name":"rose"},'+
     ']' ;
     /* 这个叫稍复杂一点的JSON格式的字符串 */
    </script>

    JSON和JS对象区别对比表

      总而言之你可以理解为JSON是JS下的一种数据格式,他从属于JS,并且在处理JSON数据时可直接使用JS内置API 

    JSON实例

    {
    "sites": [
    { "name":"菜鸟教程" , "url":"www.runoob.com" }, 
    { "name":"google" , "url":"www.google.com" }, 
    { "name":"微博" , "url":"www.weibo.com" }
    ]
    }

    JSON - 转换为 JavaScript 对象

    JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。

    由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象

    ---------------------------------JSON对象(也是一种JS对象)-----------------------------------

    下面这个是JSON对象:

     键必须为双引号

        var json={
                    "key1":"value1",
                    "address":{"name":"北京","code":205},
                    "chengji":[{"name":"物理","chengji":90},{"name":"数学","chengji":100}]
                    }; 
            alert(json.key1);//value1
            alert(json.address.code);//205
            alert(json.chengji[0].name+json.chengji[0].chengji);//物理90

    注意:对象格式和数组格式可以互相嵌套

     

    注意:json的key是字符串,且必须是双引号,不能是单引号

        json的value是Object

     

    json的解析:

      json是js的原生内容,也就意味着js可以直接取出json对象中的数据

    ----------------------------------------JSON语法格式的JS对象---------------------------------

    键可以带单引号、双引号或不带引号

                //JSON语法的JS对象
                var p = {
                    'name': '张三',
                    "sex": '男',
                    age: 20,
                    info: function() {
                        alert("这是函数格式!");
                    },
                    son: {
                        name: '张三儿子'
                    }
                }
                alert(p);    
                p.info();
                alert(p.son.name);

    例子:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    
        <head>
            <title>json01</title>
            <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
            <meta http-equiv="description" content="this is my page">
            <meta http-equiv="content-type" content="text/html; charset=UTF-8">
            <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
        </head>
    
        <body>
            <ul>
                <li id="bj" name="beijing">北京</li>
            </ul>
        </body>
    
        <script language="JavaScript">
            //JSON格式的JS对象(可以直接取值)
            var data = {
                "name": "runoob",
                "alexa": 10000,
                "site": "www.runoob.com"
            };
            document.write(data.name + "<br/>");
            //将JSON字符串转为JS对象的方法一
            var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');
            document.write(obj.name + "<br/>");
            //将JSON字符串转为JS对象的方法二
            //JSON格式的字符串
            var test1 = '{"name":"qlq","age":25}';
            var obj2 = eval("(" + test1 + ")"); //必须带圆括号
            document.write(obj2.name + "<br/>" + obj2.age);
    
            //JS对象转换为JSON字符串
            var json1 = JSON.stringify(test1);
            document.write("<br/>" + json1);
        </script>
    
    </html>

  • 相关阅读:
    transient关键字
    java 序列化,反序列化工具
    switch case语法
    java空map定义
    斐波那契数列的实现算法
    正则表达式
    java业务逻辑代码中需要增加一些与主流业务无关操作
    阿里巴巴开发手册对manager层的定义
    july 19
    bulletproof monk quote
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/7351941.html
Copyright © 2011-2022 走看看