Python操作json文件反序列化和序列化是怎样的

Admin 2022-07-04 群英技术资讯 296 次浏览

今天这篇给大家分享的知识是“Python操作json文件反序列化和序列化是怎样的”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“Python操作json文件反序列化和序列化是怎样的”文章能帮助大家解决问题。



    json转化为python表示反序列化

    python转化为json表示为序列化

    json是python的内置模块,不需要安装

    json支持的格式:

    Json Python
    对象(object) 字典(dict)
    数组(array) 列表(list)
    字符串(string) 字符串(str)
    整数(int) 整数(int)
    实数(float) 实数(float)
    true True
    false False
    null None

    代码操作

    1.json转化为python

    json提供的两个函数支持json字符串反序列化为一个python对象

    json.loads(s)
    其中s表示字符串

    import json
    
    str_json = '{"name":"张三","age":24}'
    res = json.loads(str_json)
    print(res, type(res))  #{'name': '张三', 'age': 24} <class 'dict'>
    

    json.load(fb)
    fb:表示为文件对象test.json

    test.json

    {
      "name":"张三",
      "age":24,
      "friends": [{
        "name": "李四",
        "age": 23
      },
        {
          "name": "王麻子",
          "age": 24
        }],
      "hobby": ["玩游戏","看电影"]
    }
    
    import json
    
    with open('test.json', 'r', encoding='utf-8') as f:
        res = json.load(f)
        print(res, type(res))
      # {'name': '张三', 'age': 24, 'friends': [{'name': '李四', 'age': 23}, {'name': '王麻子', 'age': 24}], 'hobby': ['玩游戏', '看电影']} <class 'dict'>
    

    json字符串一般不会单独出现

    json.loads('"test"')  #'test'
    

    一般会放在字典或者列表中

    json.loads('["test1","test2","test3"]')  #['test1','test2','test3']
    

    2. python序列化为json

    json.dumps(obj,ensure_ascii=True,indent=None,sort_keys=False)

    • obj:表示为python 对象
    • ensure_ascii: 默认为 True,输出保证将所有输入的非 ASCII 字符转义。如果 ensure_ascii 是 False,这些字符会原样输出。
    • indent:一个非负整数或者字符串,JSON 数组元素和对象成员会被美化输出为该值指定的缩进等级。如果缩进等级为零、负数或者 “”,则只会添加换行符。None(默认值)选择最紧凑的表达。使用一个正整数会让每一层缩进同样数量的空格。如果 indent 是一个字符串(比如 "\t''),那个字符串会被用于缩进每一层。
    • sort_keys:为 True(more 为 False),表示字典的输出会以键的顺序排序。
    import json
    
    data = {
      "name":"张三",
      "age":24,
      "friends": [{
        "name": "李四",
        "age": 23
      },
        {
          "name": "王麻子",
          "age": 24
        }],
      "hobby": ["玩游戏","看电影"]
    }
    res = json.dumps(data,ensure_ascii=False,indent=2, )
    print(res, type(res))
    

    打印的结果为

    {
      "name": "张三",
      "age": 24,
      "friends": [
        {
          "name": "李四",
          "age": 23
        },
        {
          "name": "王麻子",
          "age": 24
        }
      ],
      "hobby": [
        "玩游戏",
        "看电影"
      ]
    } <class 'str'>

    json.dump(obj,fb,ensure_ascii=True,indent=None,sort_keys=False)

    • obj:表示为python对象
    • fb:表示为文本写打开的文件对象
    import json
    
    data = {
      "name":"张三",
      "age":24,
      "friends": [{
        "name": "李四",
        "age": 23
      },
        {
          "name": "王麻子",
          "age": 24
        }],
      "hobby": ["玩游戏","看电影"]
    }
    with open('test1.json', 'w', encoding='utf-8') as f:
        json.dump(data, fp=f, ensure_ascii=False, indent=2)
    

    写入的结果为

    test1.json

    {
      "name": "张三",
      "age": 24,
      "friends": [
        {
          "name": "李四",
          "age": 23
        },
        {
          "name": "王麻子",
          "age": 24
        }
      ],
      "hobby": [
        "玩游戏",
        "看电影"
      ]
    }
    

    总结


    以上就是关于“Python操作json文件反序列化和序列化是怎样的”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注群英网络,小编每天都会为大家更新不同的知识。
    群英智防CDN,智能加速解决方案

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

    猜你喜欢

    成为群英会员,开启智能安全云计算之旅

    立即注册
    专业资深工程师驻守
    7X24小时快速响应
    一站式无忧技术支持
    免费备案服务
    免费拨打  400-678-4567
    免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
    在线客服
    微信公众号
    返回顶部
    返回顶部 返回顶部
    在线客服
    在线客服