我絕不是Python大師,但我知道我的方式。在過去的兩個小時,但我一直在對我的頭撞針對:就地編輯Python字典或解析json到對象
我解析從WCF Webservice使用json.loads()函數的JSON響應。結果是我在整個應用程序中使用的Python字典。但是,現在我需要混淆id,reseller_id等以用於HTTP GET請求。
這是的的例如響應:(注意,我有很多這樣的答覆,所以我要尋找一個通用的解決方案。)我想的散列替換任何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
}
}
的ID我已經嘗試了各種使用類似代碼的策略:
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: 當所有其他都失敗時;有沒有人有一個想法如何實現這一點?
非常感謝!
'json.loads(json_result)'給你一個字典。 「匿名Python對象」是什麼意思?你能舉一個你想要的輸出的例子嗎? (我認爲你想散列ID,但我沒有看到任何散列任何代碼樣本的嘗試)。你想要什麼樣的哈希? –
爲了澄清,你提到的「HTTP GET請求」是否需要傳遞整個字典或散列ID? – Aya
@Aya,只需要散列編號,像/經銷商/ 28763298728 /經銷商/用戶代替/經銷商/ 1 /用戶 – Berdus