Python3-json.dumps()和json.loads()

本文详细介绍了Python3中json模块的dumps()函数用于将Python字典编码成json字符串,以及loads()函数用于将json字符串反序列化为Python字典。同时,通过实例展示了错误用法,包括非字符串参数和不符合规范的Python数据类型的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、json.dumps()

对数据进行编码,将Python字典编码成json字符串,是一个系列化的过程。

import json
from  pprint import pprint

def Test():
    py_dict = {
        "A":100,
        "B":20,
        "C":30
    }
    json_str = json.dumps(py_dict)
    print(type(py_dict))
    pprint(py_dict)
    
    print("-"*50)
    
    print(type(json_str))
    pprint(json_str)
  
Test()

输出如下:

<class 'dict'>
{'A': 100, 'B': 20, 'C': 30}
--------------------------------------------------
<class 'str'>
'{"A": 100, "B": 20, "C": 30}'

用pprint是为了让输出结构更完整,在这里可以将转为json字符串后的两端引号打印出。

注:json.dumps()也可以对字符串进行编码,转化规则就是将原字符串所有特殊字符转义成普通字符后,再将其转为字符串。

二、json.loads()

对数据进行解码,将json字符串转换Python字典或列表,是一个反序列化的过程。

import json
from  pprint import pprint
def Test():
    str1='''
        "abc"
    '''
    str2='''
        ["A",1,2,"L"]
    '''
    str3='''
        {"A":1,"B":2}
    '''
    py1 = json.loads(str1)
    print(type(py1))
    pprint(py1)
    
    py2 = json.loads(str2)
    print(type(py2))
    pprint(py2)
    
    py3 = json.loads(str3)
    print(type(py3))
    pprint(py3)
    
Test()

输出:

<class 'str'>
'abc'
<class 'list'>
['A', 1, 2, 'L']
<class 'dict'>
{'A': 1, 'B': 2}

json.loads()会将字符串解析成python中存在的类型。

2.1 以下看几个错误情况:

1、传递的参数不是字符串类型。

import json
from  pprint import pprint
def Test():
    s = 123
    py = json.loads(s)
    
    print(type(py))
    pprint(py)
    
Test()

报错如下:

Traceback (most recent call last):
File “/usercode/file.py”, line 12, in
Test()
File “/usercode/file.py”, line 7, in Test
py = json.loads(s)
File “/usr/local/lib/python3.8/json/init.py”, line 341, in loads
raise TypeError(f’the JSON object must be str, bytes or bytearray, ’
TypeError: the JSON object must be str, bytes or bytearray, not int

故,json.loads()接受到的参数必须是字符串类型。

2、参数为字符串类型,但是无法转换为符合规范的Python数据类型。

import json
from  pprint import pprint
def Test():
    s = '''123[456]'''
    py = json.loads(s)
    
    print(type(py))
    pprint(py)
    
Test()

报错如下:

Traceback (most recent call last):
File “/usercode/file.py”, line 13, in
Test()
File “/usercode/file.py”, line 8, in Test
py = json.loads(s)
File “/usr/local/lib/python3.8/json/init.py”, line 357, in loads
return _default_decoder.decode(s)
File “/usr/local/lib/python3.8/json/decoder.py”, line 340, in decode
raise JSONDecodeError(“Extra data”, s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 4 (char 3)

故,json.loads()接受到的参数必须可以转化为符合规范的Python类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值