python - 试图访问python中的嵌套字典键
问题描述
我需要加载一个 json 并阅读内容以便稍后进行编辑。我正进入(状态
{TypeError}string indices must be integers
这是json结构(注意下面是json文件已经加载时的格式,否则显示双引号)
data ={'a':'hello','b':'{"date1":"9/21/2021","date2":"9/22/2021"}','c':'new'}
尝试访问data['b']['date1']
时会引发错误
代码如下
jsonfile=open(file.json, "r")
data = json.load(jsonfile)
jsonfile.close()
date = data['b']['date1']
解决方案
的内容data['b']
是一个包含 JSON 文档的字符串:
'{"date1":"9/21/2021","date2":"9/22/2021"}'
因此,您应该首先将其转换为 JSON(字典 / 列表):
data_b = json.loads(data['b'])
现在它已转换为 dict,您已经可以访问它的键:
data_b["date1"]
如果要更新这些值,请更新字典,然后将其转换回字符串并重新分配给原始数据:
import json
data = {'a':'hello','b':'{"date1":"9/21/2021","date2":"9/22/2021"}','c':'new'}
data_b = json.loads(data['b'])
data_b["date1"] = "updated 1"
data_b["date2"] = "updated 2"
data['b'] = json.dumps(data_b)
print(data)
输出:
{'a': 'hello', 'b': '{"date1": "updated 1", "date2": "updated 2"}', 'c': 'new'}
要将其写回,您必须以写入模式 w
打开文件,然后使用json.dump()或file.write()。
with open("file.json", 'w') as json_file:
# Option 1
json.dump(data, json_file)
# Option 2
# json_file.write(json.dumps(data))
推荐阅读
- asp.net - ASP.NET 中的 EasyNetQ (AMQP) 单一应用程序连接?
- java - 在mysql表中插入数据时出错
- java - 如何使用 Java 中的“评估”方法使用 groovy 脚本中定义的函数
- javascript - 如何以动态形式创建动态元素
- laravel - 使用 Laravel 和 AWS 设置 cron 作业
- python - 使用 django 加载静态 css 文件时出现问题
- c# - Kofax 导出连接器 - 从 IndexField 获取值
- html - 如何使用 bootstrap 4.1 在 jumbotron 中间添加一个 html 表单?
- c# - IIS 上的 Net Core Cors 和 Angular 应用程序
- runtime - Eiffel:在运行时创建类型化对象