{
"RuntimeSources": {
"flask-webapp": {
"eb-flask1.3": {
"s3url": ""
}
}
},
"DeploymentId": 4,
"Serial": 4
}
有這樣一個json檔, 我現在我需要提取出flask-webapp
這個key的name,即flask-webapp
這個字串本身,我應該如何使用呢?使用Object.keys()的話我得到的是RuntimeSource,DeploymentId和Serial這三個key。
感覺自己描述的有些複雜,問題提煉一下就是:如何提取這個json檔案的第一個key-value中的下一層key-value中的key(好像說的更複雜了。希望能看懂)
用python或javascript實作都可以
雷雷
這是需要處理的數據,題主的問題應該可以看成下面問題的真子集
(問題是只要取得
"flask-webapp"
)這個過程 暫且稱之為
鋪平 flat
, 我這裡也實現了這個函數 用於取得這個解。利用 Object.keys 解決問題
Object.keys
能取得可列舉的第一層物件屬性鍵名利用這樣的特性來寫遞歸函數:
ScreenShot
特別地 你需要
flask-webapp
這個鍵名:利用 JSON.stringify 解決問題
JSON.stringify
可以把物件轉換成JSON字串
例如
JSON.stringify(o)
可以得到結果"{"RuntimeSources":{"flask-webapp":{"eb-flask1.3":{"s3url":""}}},"DeploymentId ":4,"Serial":4}"
繼續觀察可以發現:
把 JSON 的元素構成一個數組,再把
冒號
前的挑出來就可以了。工具函數
flat
的實作上面的意思是:
第一個 reduce 給
{
}
:
,
的前後補了空格對應代碼
結果是這樣的:
原來的 str 從
"{"RuntimeSources":{"flask-webapp":{"eb-flask1.3":{"s3url":""}}},"DeploymentId":4,"Serial":4}"
經過處理後 變成
" { "RuntimeSources" : { "flask-webapp" : { "eb-flask1.3" : { "s3url" : "" } } } , "DeploymentId" : 4 , "Serial" : 4 } "
得到一個中間結果
A
Next
這裡要處理
A
對應碼:
把
A
轉成中間數組B
: (從字串變成數組)最後一個 reduce 得到結果
觀察
B
可以得到一個結論據此寫出 最後的reduce:把
冒號
前的元素收集起來 得到結果ScreenShot
執行到最後應該會拋出錯誤 Cannot convert undefined or null to object,這個沒事兒
如果是要用python實現的話,dict是一種散列表結構,就是說數據輸入後按特徵已經被散列了,有自己的順序
如果你可以指定key的名字倒還可以獲取,如果不能指定key的名字,那就做不到
python 預設字典是無序的,但是可以用 OrderedDict 有序字典來實作。
雷雷