我正在尝试从json文件中的键中提取值。它的类型是dict,但是在测试存在的密钥之后不是提取内容,而是仅获得{'name_of_key': <type 'dict'>}
。如何成功提取实际内容呢?我的代码是:
with open("a.json", 'r') as infile, open("b.json", 'w') as outfile:
key = "name_of_key"
for key in infile:
value = {"name_of_key": dict}
if key is not None:
outfile.write(str(value))
json文件看起来像这样,我想在“name_of_key”后提取所有内容:
{
"_links": {
"self": {
"href": "/linkxxx"
}
},
"metadata": {
"name_of_key": {
"key": {
"key3s": "eighteen"
},
"key": "company",
"modelItems": {
"key1": "1",
"key2": "2",
"key0": "0"
}
},
"contentType": "type_of_media"
}
}
答案 0 :(得分:1)
您的代码中存在多个问题。
json
模块 Python标准库附带了一个名为json
的模块,它可以帮助您将JSON文本解析为Python对象,并将Python对象序列化为JSON。它的Python 2.7版文档是here。具体来说,请查看函数json.load
和json.dump
。
dict
是什么?其次,我不明白你的意图是什么:
mydictionary = {"name_of_key": dict}
在Python中,dict()
是用于创建字典的构造函数(您可以看到它如何在examples in the documenation中使用)。
如果您打算使用dict()
构建字典,则应该向其传递一些参数。
如果您打算使用dict
作为变量名称(但其定义在哪里?),请不要这样做,因为该定义会隐藏全局定义的dict
名称。
<type 'dict'>
dict
是一个类名。如果启动Python解释器并执行此操作,您也会获得<type 'dict'>
:
>>> print dict
<type 'dict'>
此处dict
不是字典值,而是用于创建字典的构造函数。
打印实际的dictonary值:
>>> a = dict([('one', 1), ('two', 2)])
>>> print a
{'two': 2, 'one': 1}
或更简单地说,就像这样,它是相同的:
>>> a = {'one': 1, 'two': 2}
>>> print a
{'two': 2, 'one': 1}
import json
def extract_metadata(input_filename, output_filename, wanted_key):
with open(input_filename, 'r') as infile:
data = json.load(infile)
with open(output_filename, 'w') as outfile:
json.dump(data['metadata'][wanted_key], outfile)
extract_metadata('a.json', 'b.json', 'name_of_key')