JSON的基本理解

JSON的基本格式

        JSON就是一种特殊的字符串,他并不像程序或者代码那样会自己运行,其实他就是一种有固定格式的文本。按照特定格式进行书写,便于程序进行解析里面的数据。

入门级  


        JSON一定是以一个大括号开头,一个大括号结尾的,且成对出现,不可能只有一个前括号,没有后括号,那样是错的。所有的内容都应该在这个大括号中

        如下所示,就是一个空的JSON串。就是说,只要是一对大括号,里面不管有没有值,他都是一个正确的JSON。

{}

        如果我想用JSON的方式告诉其他人,有个人的名字叫咕咕,这时候,我们的JSON可以这样写

{ 
    "name":"咕咕" // 冒号前的我们成为属性,属性一定要用双引号包起来 [值]除了是数字,子json串,列表的情况下不用双引号包起来,其他情况也必须用双引号包起来 
}

        上面这个就是一个标准的JSON字符串。JSON串里面 冒号前面的我们叫做[属性名称]或者叫[键],冒号后面的我们叫做[值],我们把键和值统一成为[键值对],就是一对一对的键和值。因为键和值不会单独存在,都是成对出现的。键值对中间用冒号做分隔符

        所以上面的JSON我们就可以说,这个JSON有个name属性,它的值是"咕咕"。

        上面是JSON串的基本结构,如果有多个键值对,我们用逗号隔开每一个键值对,比如:有个人名字叫咕咕,年龄为18 ,性别是男,我们可以这样写

{
    "name":"咕咕", // 两个键值对之间 一定要用 逗号 隔开,不然程序无法将两个键值对区分开 
    "age":18,
    "gender":"男"// 最后一个键值对后面一定不要写 逗号 不管你在其他地方看到有没有写,最后一个键值对后面不写 逗号 绝对是正确的 
}

        两个键值对之间 一定要用 逗号 隔开,而且[值]是数字、子json串(就是用大括号括起来的,后面讲)、列表(有些人把列表叫做数组)的情况下(用中括号表示,后面会讲到),不用双引号包起来,其他情况必须使用双引号包起来

        现在这个JSON字符串的内容就开始丰富起来了。就可以表示很多的信息了,但是还不够。比如我有三个苹果,我想把苹果的重量和价格都通过这个JSON串展示出来怎么办呢?

编号重量价格
第一个苹果1300克3元
第二个苹果2200克2元
第三个苹果3350克3.5元

          这个时候,我们就可以使用列表来表示了

{ 
     "name":"咕咕",
     "age":18,
     "gender":"男",
     "apples":[ // 这里的中括号,代表这中括号里面的数据是个列表,也一定前后两个括号成对出现 
                {}, // 第一个苹果的数据就写在这个JSON串里,列表中每个数据之间依然必须用逗号隔开 
                {}, // 第一个苹果的数据就写在这个JSON串里 
                {} // 第一个苹果的数据就写在这个JSON串里,列表中最后一个数据必须不写逗号 
     ] 
}

        把苹果的数据写进去就是这样的

{
     "name":"咕咕",
     "age":18,
     "gender":"男",
     "apples":[ // 这里的中括号,代表这中括号里面的数据是个列表,也一定前后两个括号成对出现         
                    {"no":1,"weight":"300克","price":"3元"}, // 第一个苹果的数据就写在这个JSON串里,列表中每个数据之间依然必须用逗号隔开 
                    {"no":2,"weight":"200克","price":"2元"}, // 第一个苹果的数据就写在这个JSON串里 
                    {"no":3,"weight":"350克","price":"3.5元"} // 第一个苹果的数据就写在这个JSON串里,列表中最后一个数据必须不写逗号 
       ] 
}

        这样就把最上面表格中的苹果数据,以JSON串的形式展示出来了。

        一般来说,为了看起来比较有层次性,我们会将格式自己格式化一下。就变成下面这样了

{
     "name": "咕咕",
     "age": 18,
     "gender": "男",
     "apples": [ // 这里的中括号,代表这中括号里面的数据是个列表,也一定前后两个括号成对出现 
                    {
                         "no": 1, // 这种单纯的数字,不用加引号,加上一般情况下也不会错
                         "weight": "300克",
                         "price": "3元" 
                    }, // 第一个苹果的数据就写在这个JSON串里,列表中每个数据之间依然必须用逗号隔开 
                    {
                         "no": 2,
                         "weight": "200克",
                         "price": "2元" 
                    }, // 第一个苹果的数据就写在这个JSON串里 
                    {
                         "no": 3,
                         "weight": "350克",
                         "price": "3.5元" 
                    } // 第一个苹果的数据就写在这个JSON串里,列表中最后一个数据必须不写逗号 
    ] 
}

        列表里面除了有多个JSON串外,还可以是字符串,或者数字。

        比如咕咕现在手里面有很多app的密码,要给他记录下来。我们就可以在上面的JSON串里面再加一个属性passwords。

{
  "name": "咕咕",
  "age": 18,
  "gender": "男",
  "apples": [// 这里的中括号,代表这中括号里面的数据是个列表,也一定前后两个括号成对出现 
    {
      "no": 1,// 这种单纯的数字,不用加引号,加上一般情况下也不会错 
      "weight": "300克",
      "price": "3元"
    },// 第一个苹果的数据就写在这个JSON串里,列表中每个数据之间依然必须用逗号隔开 
    {
      "no": 2,
      "weight": "200克",
      "price": "2元"
    },// 第一个苹果的数据就写在这个JSON串里 
    {
      "no": 3,
      "weight": "350克",
      "price": "3.5元"
    }// 第一个苹果的数据就写在这个JSON串里,列表中最后一个数据必须不写逗号 
  ],// 这个中括号是apples这个属性值的结束标记,由于下面还有新的属性,所以两个属性之间用逗号隔开
  "passowords": [
    "abcdef",
    "dsasge",
    123455,
    321
  ]// 列表里面的每个元素都用逗号隔开,元素可以是任意类型(字符串,数组,子json串,甚至列表) 
}

        属性的值也可以是一个JSON串

        现在咕咕小朋友有了一个媳妇儿,怎么把他的媳妇儿也记录到他的信息中去呢,这个时候就需要添加一个新的属性wife,因为wife也是一个人,她也有属于自己的名字、年龄等,所以wife这个属性的值也可以用JSON串来存她的所有属性。

        比如咕咕媳妇儿的名字是龙龙,年龄是16,性别...额自然是女,我们先把他媳妇儿的JSON串写出来

{
  "name": "龙龙",
  "age": 16,
  "gender": "女"
}

        然后我们将上面的信息放在咕咕的wife属性中。

{
  "name": "咕咕",
  "age": 18,
  "gender": "男",
  "apples": [// 这里的中括号,代表这中括号里面的数据是个列表,也一定前后两个括号成对出现
    {
      "no": 1,// 这种单纯的数字,不用加引号,加上一般情况下也不会错 
      "weight": "300克",
      "price": "3元"
    },// 第一个苹果的数据就写在这个JSON串里,列表中每个数据之间依然必须用逗号隔开 
    {
      "no": 2,
      "weight": "200克",
      "price": "2元"
    },// 第一个苹果的数据就写在这个JSON串里 
    {
      "no": 3,
      "weight": "350克",
      "price": "3.5元"
    }// 第一个苹果的数据就写在这个JSON串里,列表中最后一个数据必须不写逗号 
  ], // 这个中括号是apples这个属性值的结束标记,由于下面还有新的属性,所以两个属性之间用逗号隔开 
  "passowords": [
    "abcdef",
    "dsasge",
    123455,
    321
  ],// 列表里面的每个元素都用逗号隔开,元素可以是任意类型(字符串,数组,子json串,甚至列表) 
  "wife": {
    "name": "龙龙",
    "age": 16,
    "gender": "女"
  }
}

        这样,这个JSON串就看起来非常复杂了。一般我们看着复杂的JSON串,我们就会利用工具,对JSON串进行格式化,便于观看。这里可以在线搜索一些在线JSON串格式化工具。比如

JSON在线编辑器--SO JSON在线https://www.sojson.com/editor.html

        我们将上面的JSON字符串复制到他的JSON视图标签下的输入框中

 

        点击解析JSON,就能很简洁清晰的看到第一个层级的所有属性。这时候我们找到对应的属性,点击展开,就可以看到我们关注的属性的值了,就不会觉得JSON串太复杂了。我们一层一层的展开我们需要的那部分数据,不需要的那部分数据就折叠着,就不会从心理上感到害怕啦。

        点击wife前面的小箭头,就可以展开看见wife的详细信息啦(再次点击小箭头,又会折叠回去)

 

         我们再点击apples,就可以看到apples列表元素了

        我们看到,apples列表中有三个元素,我们想看哪个元素的详细信息,就点击某个元素前方的小箭头。就可以展开看到详细了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值