所以我对系统A运行GET并获得此输出:
'{
"comment": "A good object",
"number": "1.1",
"extra_stuff": {
"extra_id": {"value": 100},
"extra_name": {"value": "Test"},
}
}'
在我发布到系统B之前,我需要翻译(并省略)某些键(但保留值)。我想从这个GET和翻译只需要嵌套的字典键(extra_stuff中的键),只有其中一个。
翻译:
mapping_dict = { 'extra_id': 'id' }
dict_to_post = { '#KEY extra_ID': #VALUE FROM extra_ID# :, 'name' : Test, 'other' : True }
我有一个从另一个问题翻译字典键的功能:
def update_dict_keys(obj, mapping_dict):
if isinstance(obj, dict):
return {mapping_dict[k]: update_dict_keys(v, mapping_dict) for k, v in obj.iteritems()}
else:
return obj
但我不确定如何只将嵌套字典发送到该函数中,我似乎只把“主”字典放在那里。不确定最好的方法是什么。我还需要处理来自“主要”字典的信息以及另一篇文章。
答案 0 :(得分:0)
您确定,
后面有{"value": "Test"}
,因为这不是有效的json
而您的获得回复看起来像json
。
如果这只是你帖子中的错误,你可以
使用json.loads()
从响应字符串中获取字典:
import json
res = '{
"comment": "A good object",
"number": "1.1",
"extra_stuff": {
"extra_id": {"value": 100},
"extra_name": {"value": "Test"}
}
}'
# convert to dict
res_dict = json.loads(res)
# do your mapping
dict_to_post = { 'extra_id': res_dict['extra_stuff']['extra_id']['value']}
# dict_to_post is {'extra_id': 100} now
此外,我不了解您需要的mapping_dict
。您想要{' id':100}作为结果吗?
答案 1 :(得分:0)
所以我发现我得到的反应已经被解码了!我遇到的问题是解码后的响应是一个字典中带有字典的列表。