字典保存json及加载;json转字典 true、false格式处理

本文详细介绍了如何使用Python处理JSON文件,包括如何避免中文乱码问题进行保存和加载,以及如何将小写true、false转换为Python字典兼容的格式。这些技巧对于处理包含中文的数据至关重要。

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

1、保存

注意:,ensure_ascii=False 预防中文乱码

import json

with open("img_rec2.json", "w",encoding='utf-8') as f:
    f.write(json.dumps(mm,ensure_ascii=False))

在这里插入图片描述

2、加载

注意:添加,encoding='utf-8’预防中文加载错误

k1 = open("img_rec2.json",encoding='utf-8')
json.load(k1)

在这里插入图片描述

3、json转字典 true、false格式处理

json中存在这种格式,python字典会报错,一是替换成正确的True、False大写格式;而是直接json.loads(“”“{带小写格式true、false的json}”“”)

import json
bbbbb=json.loads("""{"a":true}""")

在这里插入图片描述

### 将 JSON 中的布尔值换为 Python 的 TrueFalse 当从 JSON 文件中加载数据到 Python 时,`json.load()` 或 `json.loads()` 函数会自动处理基本的数据类型映射。对于布尔值而言,JSON 格式的 `true` 和 `false` 会被正确解析成 Python 的 `True` 和 `False`。 如果遇到的情况是从字符串形式读取布尔值并希望将其换为实际的布尔对象,则可以采用以下几种方式: #### 方法一:使用内置 eval() 函数 虽然简单但不推荐用于不可信输入源,因为可能存在安全风险。 ```python bool_value = eval(json_string.lower()) ``` #### 方法二:字典映射法 创建一个简单的映射关系来进行换更为安全可靠。 ```python def str_to_bool(s): return {'true': True, 'false': False}.get(s.lower(), None) # 使用示例 json_data = {"is_valid": "true", "has_error": "FALSE"} for key in json_data: json_data[key] = str_to_bool(json_data[key]) print(json_data) # 输出: {'is_valid': True, 'has_error': False} ``` #### 方法三:利用 ast.literal_eval() 此方法适用于更广泛的场景,并且相对更加安全。 ```python from ast import literal_eval def safe_str_to_bool(value): try: result = literal_eval(value.title()) # title() 处理大小写差异 if isinstance(result, bool): return result raise ValueError(f'"{value}" is not a valid boolean value.') except (ValueError, SyntaxError): raise ValueError(f'Invalid boolean value "{value}".') # 测试代码片段 test_values = ["TRUE", "False", "invalid"] for v in test_values: try: print(f'{v}: {safe_str_to_bool(v)}') except Exception as e: print(e) ``` 以上三种方案都可以有效地解决将来自 JSON 字符串表示的布尔值换为 Python 原生布尔类型的难题[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loong_XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值