【python】从小白到放弃之JSON

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lluozh2015/article/details/84309212

**

什么是 JSON?

**
JavaScript Object Notation,是一种轻量级的数据交换格式。可以理解为是一种跨语言的文本格式(即与具体语言无关),方便数据传输与协作,易于人阅读和编写,同时也易于机器解析和生成

**

结构和规则

**
在这里插入图片描述

键值对 {字典(dict)}
值的有序列表 [列表(list)]

JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,json本质上是字符串

**

JSON5

**
JSON5是对JSON的扩展,JSON5相对于JSON增加了以下特性

对象:

  • 属性key可以不使用引号包含
{
   code:200,
   'msg':'OK'
}
  • 属性key可以使用单引号包含
{
    'code':200,
    'msg':'OK'
}

字符串:

  • 可以以单引号包含
{
    'code':200,
    'msg':'OK'
}
  • 支持多行字符串
{
    "name": "lluozh",
    "addr": "NanYun Road,\
        GuangZhou,\
        China",
}
  • 可以包含转义字符
{
    "nickname": '\u6881\u6d1b\u5f70'
}

数组:

  • 可以在尾部有多余逗号
[1, 2, 3, 4,]

注释:

  • 支持单行/多行注释
/**
 * json5
 * json for humans
 */
{
    // 姓名
    name: 'ManerFan',
    sex: 'male' // 性别
}

数字:

  • 可以使用16进制表示
{
	bigInt: 0x14FFFFFFFFFFFFFFFFFF
}
  • 可以以小数点开头或结尾
{
	doubleNum: -.25e2
}
  • 支持 Infinity, -Infinity, NaN
{
	nanNum: NaN
}
  • 可以显示声明 +
{
	intNum: +123
}

**

jsondiff

**

比较两个json,如下

dict1:

{
  "id": "504",
  "name": "软件1",
  "info": 
    {
       "uid": "2017",
       "stuId":
         {
           "stu1":1,
           "stu2":2
         },
       "stuName": ["张三","李四",{"name":"钱2"}]
    }
}

dict2:

{
  "id": "503",
  "name": "希沃白板5",
  "info": 
    {
      "uid": "2018",
      "stuId": 
        {
          "stu1":1,
          "stu3":3
        },
       "stuName": ["张三","李四","王五",{"name":"钱钱"}]
     }
}

jsondiff.diff(dict1,dict2),得到结果

{
	'id': '503', 
	'name': '希沃白板5', 
	'info': {
		'uid': '2018', 
		'stuId': {
			'stu3': 3, delete:['stu2']}, 
			'stuName': {3: {'name': '钱钱'}, insert: [(2, '王五')]}
	}
}

猜你喜欢

转载自blog.csdn.net/lluozh2015/article/details/84309212