zoukankan      html  css  js  c++  java
  • 【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, '王五')]}
    	}
    }
    
  • 相关阅读:
    快速开发框架:进销存业务注意事项
    延时执行函数:前浪死在沙滩上
    新增筛选方案
    进销存数据库设计:采购订单
    SasS 设计原则十二因素
    四种线程池的解析
    高并发下的流量控制
    Mybatis 缓存机制
    谈谈JVM垃圾回收
    如何使错误日志更加方便地排查问题
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533594.html
Copyright © 2011-2022 走看看