要将嵌入的子资源更改为它们的@id,您可以使用以下代码示例来实现:
import json
def change_embedded_resources_to_id(data):
if isinstance(data, list):
for item in data:
change_embedded_resources_to_id(item)
elif isinstance(data, dict):
for key, value in data.items():
if key == 'embedded_resource':
data['embedded_resource'] = value['@id']
else:
change_embedded_resources_to_id(value)
# 示例数据
data = {
'id': 1,
'name': 'API平台',
'embedded_resource': {
'@id': 2,
'name': '嵌入子资源',
'embedded_resource': {
'@id': 3,
'name': '嵌入子资源的子资源'
}
}
}
# 更改嵌入的子资源为 @id
change_embedded_resources_to_id(data)
# 打印结果
print(json.dumps(data, indent=4))
该代码示例定义了一个change_embedded_resources_to_id
函数,该函数递归遍历给定的数据结构,并将'embedded_resource'
键的值更改为其'@id'
键的值。
使用示例数据,该代码将输出以下结果:
{
"id": 1,
"name": "API平台",
"embedded_resource": 2
}
注意:示例代码假设嵌入的子资源始终具有'embedded_resource'
键,并且它们的'@id'
键的值可以直接赋给'embedded_resource'
键。根据您的实际需求,您可能需要对代码进行修改。