PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > 编程杂谈 > 正文

    josn语法和使用方法详解

    作者:admin来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:1.JSON语法规则JSON语法是 JavaScript对象表示法语法的子集。l 数据在名称/值对中l 数据由逗号分隔l 花括号保存对象l 方括号保存数组J...
    1.JSON语法规则

    JSON 语法是 JavaScript 对象表示法语法的子集。

    l  数据在名称/值对中

    l  数据由逗号分隔

    l  花括号保存对象

    l  方括号保存数组

     

    JSON 数据的书写格式是:名称/值对。

    名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

    “firstName” : “John”

    这很容易理解,等价于这条 JavaScript 语句:

    firstName = “John”

     

    JSON 值可以是:

    l  数字(整数或浮点数)

    l  字符串(在双引号中)

    l  逻辑值(true 或 false)

    l  数组(在方括号中)

    l  对象(在花括号中)

    l  null

    JSON在线校验格式化工具:bejson

    2.JSON基础结构

    JSON建构有两种结构

    JSON简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

    1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

    2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

    经过对象、数组2种结构就可以组合成复杂的数据结构了。

    3.JSON基础示例

    简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比”名称 / 值对”更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

    名称 / 值对

    按照最简单的形式,可以用下面这样的 JSON 表示”名称 / 值对”:

    { “firstName”: “Brett” }

    这个示例非常基本,而且实际上比等效的纯文本”名称 / 值对”占用更多的空间:

    firstName=Brett

    但是,当将多个”名称 / 值对”串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个”名称 / 值对”的 记录,比如:

    { “firstName”: “Brett”, “lastName”:”McLaughlin”, “email”: “aaaa” }

    从语法方面来看,这与”名称 / 值对”相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。

    表示数组

    当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在XML中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。

    如果使用 JSON,就只需将多个带花括号的记录分组在一起:

    {
        "people": [
            { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
            { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},
            { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } 
        ]
    }

    这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):

    { 
        "programmers": [
            { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
            { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
            { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
        ],
        "authors": [
            { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
            { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
            { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
        ],
        "musicians": [
            { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
            { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
        ] 
    }

    这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

    在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。

    4.JSON和XML比较

    可读性

    JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。

    可扩展性

    XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。

    编码难度、解码难度(略)

    实例比较

    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":["乌鲁木齐"]
                }
           }
        ]
    }
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-74-616-1.html
    相关热词搜索: json