• Python JSON的解析和创建



    Python JSON的解析和创建

    本节我们来介绍一下如何使用 Python 来创建和解析 JSON 数据。

    与 PHP 类似,Python 中同样提供了两个函数来分别创建和解析 JSON 数据,注意:本节是基于 Python3 进行介绍的:

    • json.dumps():将 Python 对象转换为 JSON 数据;
    • json.loads():将 JSON 数据解析为 Python 对象。

    json.dumps()

    在 Python 中,您可以使用 json.dumps() 函数将 Python 对象转换为 JSON 数据,语法格式如下:

    json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding=“utf-8”, default=None, sort_keys=False, **kw)

    参数说明如下:

    • obj:要转换为 JSON 数据的 Python 对象;
    • skipkeys:默认值为 False,如果 dict 中 keys 内的数据不是 Python 的基本类型(str、unicode、int、long、float、bool、None),会报 TypeError 错误,若设置为 True,则会跳过这类 key;
    • ensure_ascii:默认值 True,即输出 ASCLL 码,若设置为 False,则可以输出中文;
    • check_circular:如果值为 False,则跳过对容器类型的循环引用检查,循环引用将导致溢出错误;
    • allow_nan:默认值 True,在处理 JSON 规范以外的 Float 类型时(例如:nan、inf、-inf),将其转换为 JavaScript 中的等价类型(例如:NaN、Infinity、-Infinity),若设置为 False,则会引发一个 ValueError 错误,
    • cls:用来指定一个自定义的 JSONEncoder 子类,来替换 JSONCoder 类;
    • indent:按照给定数值,将数据缩进显示,让数据读起来更加清晰;
    • separators:分隔符,分别设置不同 dict 项之间的分隔符和 dict 项内 key 与 value 之间的分隔符,并将冒号 : 与逗号, 之后的空格全部去除;
    • encoding:设置 JSON 数据的编码方式,默认为 UTF-8;
    • default:指定一个函数,当某个对象无法被序列化时会调用该函数;
    • sort_keys:若值为 Ture,则表示按照 dict 排序(a 到 z)输出。

    示例代码如下:

    import json
    dictionary = {"title":"JSON教程","author":"C语言中文网","url":"http://c.biancheng.net/","catalogue":["JSON是什么?","JSONP是什么?","JSON语法规则"]}
    jsonString = json.dumps(dictionary, indent=4, ensure_ascii=False)
    print(jsonString)
    
    • 1
    • 2
    • 3
    • 4

    运行结果如下:

    {
        "title": "JSON教程",
        "author": "C语言中文网",
        "url": "http://c.biancheng.net/",
        "catalogue": [
            "JSON是什么?",
            "JSONP是什么?",
            "JSON语法规则"
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    json.loads()

    在 Python 中,您可以使用 json.loads() 函数将 JSON 数据转换为 Python 对象,语法格式如下:

    json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

    参数说明如下:

    • s:要转换的 JSON 数据,可以是 str、bytes 或 bytearray 等类型;
    • encoding:可选参数,设置 JSON 数据的编码方式,默认为 UTF-8;
    • cls:可选参数,用于指定一个自定义 JSONCoder 的子类,来替换 JSONCoder 类;
    • object_hook:可选参数,将函数的返回值替换为指定的类型,该功能可以用来实现自定义解码器,例如 JSON-RPC;
    • parse_float:可选参数,如果指定该参数,那么在解码 JSON 数据时,符合 float 类型的字符串将转换为指定的类型;
    • parse_int:可选参数,如果指定该参数,那么在解码 JSON 数据时,符合 int 类型的字符串将转换为指定的类型;
    • parse_constant:可选参数,如果指定该参数,那么在解码 JSON 数据时,若出现 -Infinity、Infinity、NaN 等字符串,则调用指定的方法;
    • object_pairs_hook:可选参数,将结果以 key-value 有序列表的形式返回,如果 object_hook 和 object_pairs_hook 同时指定的话,优先按照 object_pairs_hook 的设置返回。

    示例代码如下:

    import json
    json_str = '{"title":"JSON教程","author":"C语言中文网","url":"http://c.biancheng.net/","catalogue":["JSON是什么?","JSONP是什么?","JSON语法规则"]}'
    data = json.loads(json_str)
    print(data)
    
    • 1
    • 2
    • 3
    • 4

    运行结果如下:

    {‘title’: ‘JSON教程’, ‘author’: ‘C语言中文网’, ‘url’: ‘http://c.biancheng.net/’, ‘catalogue’: [‘JSON是什么?’, ‘JSONP是 什么?’, ‘JSON语法规则’]}

  • 相关阅读:
    微信小程序实现文章内容详情
    DRF-接口文档-(三方drf-yasg)-(简单使用): 使用自定义的认证类,使用jwt做token时,想要使用自动生成文档
    使用Ganache、web3.js和remix在私有链上部署并调用合约
    老卫带你学---leetcode刷题(221. 最大正方形)
    轻量级导出 Excel 标准格式
    电子工艺卡在汽车制造流程中的应用
    CSS基础入门笔记(选择器)
    Kafka3.0.0版本——消费者(自动提交 offset)
    Python的魔术方法
    图像压缩(4)《数字图像处理》第八章 8.3节 数字图像水印
  • 原文地址:https://blog.csdn.net/m0_62617719/article/details/127837498