在Python中从json数组中删除字段



目前我有一个函数通过jsonify返回json。

[
{
"hostname": "bla",
"ipaddress": "192.168.1.10",
"subnetmask": "255.255.255.0",
"iloip": "192.168.1.11"
}
]

我想保持json格式,但我想只显示我选择的字段(即减少它)。对于本例,我需要主机名和ipaddress。

感谢

您可以使用字典推导:

json_input = '''
[

{
"hostname": "bla",
"ipaddress": "192.168.1.10",
"subnetmask": "255.255.255.0",
"iloip": "192.168.1.11"
}
]
'''
desired_keys = {'hostname', 'ipaddress'}
json_filtered = json.dumps([{ k:v for (k,v) in d.items() if k in desired_keys} 
for d in json.loads(json_input)])
print(json_filtered)

输出:

'[{"hostname": "bla", "ipaddress": "192.168.1.10"}]'

我相信你想实现可以用下面的代码:

import json
data_json = '{"hostname": "bla","ipaddress": "192.168.1.10","subnetmask": "255.255.255.0","iloip": "192.168.1.11"}'
data = json.loads(data_json)
chosen_fields = ['hostname', 'ipaddress']
for field in chosen_fields:
print(f'{field}: {data[field]}')

输出:

hostname: bla
ipaddress: 192.168.1.10

这里我们要做的是解析stringified json使用python的json版本的模块(即json.loads(…))。接下来决定我们想要访问的字段(即chosen_fields)。最后,我们遍历想要到达的字段并获得字段的相应值。这使得原始json未被修改,如您所愿。希望对你有帮助。


或者如果您希望这些字段作为简化的json对象:

import json
data_json = '{"hostname": "bla","ipaddress": "192.168.1.10","subnetmask": "255.255.255.0","iloip": "192.168.1.11"}'
data = json.loads(data_json)
chosen_fields = ['hostname', 'ipaddress']
reduced_json = "{" 
for field in chosen_fields:
reduced_json += f'"{field}": "{data[field]}", '
reduced_json = list(reduced_json)
reduced_json[-2] = "}" 
reduced_json = "".join(reduced_json)
reduced = json.loads(reduced_json)
for field in chosen_fields:
print(f'"{field}": "{reduced[field]}"')

输出:

"hostname": "bla"
"ipaddress": "192.168.1.10"

如果我没理解错的话:

import json

response = [
{
"hostname": "bla",
"ipaddress": "192.168.1.10",
"subnetmask": "255.255.255.0",
"iloip": "192.168.1.11",
}
]
desired_keys = ["hostname", "ipaddress"]
new_response = json.dumps(
[{key: x[key] for key in desired_keys} for x in response]
)

现在你有了一个new_response有效的JSON,你可以继续在

上工作

最新更新