Python高级特性之json

本文介绍了Python中json模块的使用,包括如何将json字符串转换为字典、字典转为json字符串的方法,以及json.dumps和json.loads的参数设置,如skipkeys选项和去除空格的处理。

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

json是一个字符串,’{ “firstName”:“John” , “lastName”:“Doe” }’,相当于把一个字典dict放到两个引号’'中间,就成为一个json字符串,使用eval可以将其转化为字典

>>> import json
>>> s='{ "firstName":"John" , "lastName":"Doe" }'
>>> print(type(s))
<class 'str'>
>>> print(eval(s))
{'lastName': 'Doe', 'firstName': 'John'}
>>> type(eval(s))
<class 'dict'>

在这里插入图片描述
json.dumps(‘json_str’):将json字符串转化为字典
json.loads(dict):将字典转化为json字符串

import json
d={"a":1,"name":"zhangsan"}
print(type(d)
print(json.dumps(d))
print(d)
print(type(json.dumps(d)))
print(json.dumps(d))
print(json.loads(json.dumps(d)))

在这里插入图片描述

>>> data = [ { 'a':'A', 'x':(2, 4), 'c':3.0,"b":"4" },]
>>> print(json.dumps(data))
[{"a": "A", "x": [2, 4], "c": 3.0, "b": "4"}]
>>> print(json.dumps(data, sort_keys=True))
[{"a": "A", "b": "4", "c": 3.0, "x": [2, 4]}]

>>> print(json.dumps(data, sort_keys=True, indent=3))  #indent=3以3个空格缩进

在这里插入图片描述
去掉编码后的json串中,和:后面的空格

>>> data =  [{"a": "A", "b": [2, 4], "c": 3.0}]
>>> print(json.dumps(data, separators=(',',':')))
[{"c":3.0,"a":"A","b":[2,4]}]
>>> print(json.dumps(data))
[{"c": 3.0, "a": "A", "b": [2, 4]}]

在这里插入图片描述
skipkeys=True时,允许dumps的数据不为str类型

import json
data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, (1,2):'D tuple' } ]
print("不设置skipkeys 参数")
#不设置skipkeys 参数
try:
    res1 = json.dumps(data) #skipkeys参数默认为False时
except Exception as e:
    print(e)

在这里插入图片描述

import json
data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, (1,2):'D tuple' } ]
print("设置skipkeys 参数")
#设置skipkeys 参数
print(json.dumps(data, skipkeys=True))# skipkeys=True时

加粗样式
将json字符串的值传入类中创建类实例

import json
class Employee(object):
    def __init__(self, name, age, sex, tel): 
        self.name = name
        self.age = age
        self.sex = sex
        self.tel = tel

def jsonToClass(emp):
    return Employee(emp['name'], emp['age'], emp['sex'], emp['tel'])

#emp = Employee('Lily', 24, 'female', '18223423423')
json_str = '{"name": "Lucy", "age": 21, "sex": "female", "tel": "15834560985"}'
e = json.loads(json_str, object_hook = jsonToClass)
print(e) 
print(e.name)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值