json

作者: _Caesar | 来源:发表于2018-04-27 21:15 被阅读17次

    一.Ajax准备知识:json

    说起json,我们都知道了解就是python中的json模块

    json对象标记(是一种轻量级的数据交换格式
    它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
    简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
    
    json其实是从js中拿出的一个对象,也可以说json是js的一个子集。
    图片.png

    需要知道的:json的格式来源于js的格式
    1.js支持单引号也支持双引号,也可以没有引号

     //在js中吧{}这样的类型叫做对象,js中没有字典一说
    data = {
        'name':'haiyan',
        "name":"haiyan",
         name:"haiyan"        
    }     //js对象默认会把自己的键当成字符串处理,所以可以加引号也可以不加
    

    2.json的格式:

    1、json只认双引号的
    2、json一定是一个字符串
    

    3.下面那些是合格的字符串,那些不是?
    合格的json对象:

    ["one", "two", "three"]
    { "one": 1, "two": 2, "three": 3 }
    {"names": ["张三", "李四"] }
    [ { "name": "张三"}, {"name": "李四"} ]
    

    不合格的json对象:

    { name: "张三", 'age': 32 }                     // 属性名必须使用双引号
    [32, 64, 128, 0xFFF] // 不能使用十六进制值
    { "name": "张三", "age": undefined }            // 不能使用undefined
    { "name": "张三",
      "birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'),
      "getName":  function() {return this.name;}    // 不能使用函数和日期对象
    }
    
    python中的序列化(dumps)与反序列化(loads)
    import json
    i = 10
    s = "dsfdsf"
    l = [11,22,33]
    dic = {"name":"haiyna","age":22}
    b = True
    # #吧基本数据类型转换成字符串的形式
    print(json.dumps(i),type(json.dumps(i)))   #10 <class 'str'>
    print(json.dumps(s),type(json.dumps(s)))   #"dsfdsf" <class 'str'>
    print(json.dumps(l),type(json.dumps(l)))   #[11, 22, 33] <class 'str'>
    print(json.dumps(dic),type(json.dumps(dic)))  #{"name": "haiyna", "age": 22} <class 'str'>
    print(json.dumps(b),type(json.dumps(b)))  #true <class 'str'>
    
    
    
    # ===============json反序列化=============
    d = {"a":1,"b":"fdgfd"}
    data = json.dumps(d)
    print(data,type(data))
    f = open("a.txt","w")
    f.write(data)   #注意这会写进去的字符串时双引号的格式
    f.close()
    
    # ===============json序列化=============
    f = open("a.txt","r")
    datat = f.read()
    print(datat,type(datat))   #{"a": 1, "b": "fdgfd"} <class 'str'>
    data = json.loads(datat)
    print(data,type(data))  #{'a': 1, 'b': 'fdgfd'} <class 'dict'>
    
    js中的序列化(stringify)与反序列化(parse)

    json.stringify():用于将一个javaScript对象转换为json字符串
    json.parse():用于将一个json字符串转换为javaScript对象

    <script>
    //===========js中的json序列化===========
    s = '{"name":1}';    
    var data = JSON.parse(s);
    console.log(data);
    console.log(typeof data);   //object
    //===========js中的json的反序列化=======
    s2={'name':'yuan'};
    console.log(JSON.stringify(s2),typeof JSON.stringify(s2))  //string
    </script>
    

    json和xml的比较

    1,xml也是存数据的一种格式,也是一种标记语言,它是利用节点进行查找的
    2,json格式于20012001年由 Douglas Crockford 提出,目的就是取代繁琐笨重的 XML 格式。
    json格式有两个显著的优点:书写简单一目了然,符合javaScript原生语法,可以解释引擎直接处理,不用另外添加解析代码。所以json迅速的被接受,已经成为各大网站交换数据的标准格式,并被写入ECMAScript 5,成为标准的一部分。
    xml和json使用结构化方法来标记数据,下面简单比较
    用xml来表示中国部分省市数据如下:

    <?xml version="1.0" encoding="utf-8"?>
    <country>
        <name>中国</name>
        <province>
            <name>黑龙江</name>
            <cities>
                <city>哈尔滨</city>
                <city>大庆</city>
            </cities>
        </province>
        <province>
            <name>广东</name>
            <cities>
                <city>广州</city>
                <city>深圳</city>
                <city>珠海</city>
            </cities>
        </province>
        <province>
            <name>台湾</name>
            <cities>
                <city>台北</city>
                <city>高雄</city>
            </cities>
        </province>
        <province>
            <name>新疆</name>
            <cities>
                <city>乌鲁木齐</city>
            </cities>
        </province>
    </country>
    

    用json如下:

    {
        "name": "中国",
        "province": [{
            "name": "黑龙江",
            "cities": {
                "city": ["哈尔滨", "大庆"]
            }
        }, {
            "name": "广东",
            "cities": {
                "city": ["广州", "深圳", "珠海"]
            }
        }, {
            "name": "台湾",
            "cities": {
                "city": ["台北", "高雄"]
            }
        }, {
            "name": "新疆",
            "cities": {
                "city": ["乌鲁木齐"]
            }
        }]
    }
    

    可以看到,JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用得带宽。
    注意:json格式取代了xml给网络传输带来很大的便利,但是却没有xml的一目了然,尤其是json数据很长的时候,我们会陷入繁琐复杂的数据节点查找中.
    但是国人的一款在线工具 BeJson 、SoJson在线工具让众多程序员、新接触JSON格式的程序员更快的了解JSON的结构,更快的精确定位JSON格式错误。

    相关文章

      网友评论

      本文标题:json

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