• 【python】从小白到放弃之JSON


    **

    什么是 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": 'u6881u6d1bu5f70'
    }
    

    数组:

    • 可以在尾部有多余逗号
    [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, '王五')]}
    	}
    }
    
  • 相关阅读:
    PowerDesigner中生成SQL SERVER2005字段注释 和导出图片的方法
    右键显示打开控制台
    dubbo 的 Protocol 类
    nacos 的 grpc
    shell 替换文本中 为空格,多行为本合并为一行
    gcc、python3、python性能分析工具安装
    kafka listeners和advertised
    Default Activity not found 问题解决
    使用Global Mapper计算kml中面状图形的面积
    jeecg-boot 报表组——折线图初始化显示部分图例,部分变灰
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533594.html
Copyright © 2020-2023  润新知