python3 json 模块

json 模块

@(python3)

官方说明文档

json.cn 自动解析工具

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。python3 可以使用 json 模块来对 JSON 数据进行编解码。

  • json.loads() 将 json 字符串解码为 python 对象

json.dumps

将 python 对象编码转化为 json 字符串

import json

data = {'Citizen_Wang':1, 'Always fall in love':2, 'with neighbours.':3}
json_str = json.dumps(data)
print('Python 原始数据是:', data)
print('json 对象:',json_str)

print(type(data))
print(type(json_str))

输出结果:

Python 原始数据是: {'Citizen_Wang': 1, 'Always fall in love': 2, 'with neighbours.': 3}
json 对象: {"Citizen_Wang": 1, "Always fall in love": 2, "with neighbours.": 3}
<class 'dict'>
<class 'str'>

转化后的 json_str 是一个字符串类型,可以使用 enumerate 来查看一下 json_str 字符串的索引值和对应值。

for i,v in enumerate(json_str):
    print(i, v)

json.dumps 可以把 python 相应的类型,转化为 json 的一些类型,具体可以参考上面的表格。

json.loads

将 json 格式转化为 python 格式

import json

data = {'Citizen_Wang':1, 'Always fall in love':2, 'with neighbours.':3}
json_str = json.dumps(data)
print('Python 原始数据是:', data)
print('json 对象:',json_str)

print(type(data))
print(type(json_str))

date2 = json.loads(json_str)
print(date2)
print(type(date2))

输出结果:

{'Citizen_Wang': 1, 'Always fall in love': 2, 'with neighbours.': 3}
<class 'dict'>

json.dump

dump 和 dumps 的功能一样,将 dict 转化为 str 的格式,然后存入文件中。

import json

data = {'Citizen_Wang':1, 'Always fall in love':2, 'with neighbours.':3}
json_str = json.dumps(data)
file = open('2.txt', 'w')
print(type(file))

json.dump(data, file)
json.dump(json_str, file)

file.close()

json.load

load 和 loads 的功能一样,从文件中读取 str 格式并将其转化为字符串。

file = open('2.txt', 'r')
print(json.load(file))

load 在读取的时候,只需要文件对象一个参数即可。而 dump 在使用的时候,需要 python 对象作为第一个传入参数,文件对象作为第二个传入参数。

小结:

dump 或 dumps, 把其他对象或者格式,转化为 json 格式,dumps 用来处理字符串,dump 用来处理文件。

load 或 loads ,把 json 格式转化成其他格式,loads 用来处理字符串,load 用来处理文件。

在`config.json`文件中直接明码存储数据库连接信息确实存在一定的安全隐患,因为它可能包含敏感信息如用户名、密码等,这些内容一旦泄露就可能导致安全风险。为了提高安全性,可以采用以下策略: 1. **加密存储**: 可以对敏感信息(如密码)进行加密后再写入配置文件。Python中有许多库可以实现这个功能,如`cryptography`。例如,使用AES加密[^4]: ```python from cryptography.fernet import Fernet # 生成一个密钥 key = Fernet.generate_key() cipher_suite = Fernet(key) # 加密密码 password_encrypted = cipher_suite.encrypt(b"your_password") # 将加密后的密码写入config.json with open('config.json', 'w') as f: json.dump({'passwd': {'user': "E1", 'password': str(password_encrypted)}}, f) ``` 2. **环境变量**: 使用环境变量来替代硬编码的敏感信息。这样即使配置文件泄露,也不会直接暴露密码。在Python中,可以通过`os.environ`访问环境变量[^5]: ```python import os config = { 'passwd': { 'user': "E1", 'password': os.environ.get('DB_PASSWORD') } } with open('config.json', 'w') as f: json.dump(config, f) ``` 3. **使用配置管理工具**: 使用专门的配置管理工具(如`PyYAML`、`toml`),它们通常支持安全地加载/保存配置,避免直接在json文件中明写敏感信息[^6]。 相关问题--: 1. 如何在Python中解密之前加密的数据库密码? 2. 如果不希望每次都手动设置环境变量,应该怎么做? 3. 使用配置管理工具与直接写入文件相比有哪些优势?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值