我绝不是 Python Guru,但我知道自己的方式。然而,在过去的两个小时里,我一直在抨击以下内容:
我正在使用 json.loads() 函数解析来自 WCF Web 服务的 JSON 响应。结果是我在整个应用程序中使用的 Python 字典。但是,我现在需要混淆 id、reseller_id 等以便在 HTTP GET 请求中使用。
这是一个响应示例:(注意,我有很多这样的响应,所以我正在寻找一个通用的解决方案。)我想用 id 值的哈希替换任何 id 的值
{
"token":"String content",
"user":{
"distributor":{
"email":"String content",
"id":2147483647,
"name":"String content"
},
"email":"String content",
"first_name":"String content",
"id":2147483647,
"last_name":"String content",
"reseller":{
"email":"String content",
"id":2147483647,
"name":"String content",
"portal_css":"String content",
"portal_logo":"String content",
"portal_name":"String content",
"portal_url":"String content"
},
"role":2147483647
}
}
我使用以下代码尝试了各种策略:
result = json.loads(json_result, object_hook=lambda d: namedtuple('X', d.keys())(*d.values()))
和
def fun(d):
if 'id' in d:
yield d['id']
for k in d:
if isinstance(d[k], list):
for i in d[k]:
for j in fun(i):
yield j
我无法让它正常工作。所以:
问题 1: 我可以将 json 转换为(匿名)Python 对象吗?如何转换?
问题 2: 我可以就地编辑结果字典吗?
问题3: 当一切都失败时;有人知道如何实现这一目标吗?
非常感谢!