[英]More reliable method to get specific JSON value using Python
根據此問答,可以使用print data[u'X'][50][u'Z']
找到某個JSON值
data[u'X']
導致:
{
"X" : [ {
"A" : "B",
...
}, {
...
}, {
"C" : "D",
} ]
}
應用整數方法意味着需要用逗號分隔每個部分,例如"element" : [ { "name" : "value", ... },
直到找到所需的部分為止。 50。
如果將來會更改JSON結構怎么辦? 這是否意味着該整數應該每次都更新?
我認為這種方法很脆弱。 如何使其更可靠?
嘗試次數
print data[u'X'][0]
導致:
{u'A': u'B', u'C': u'D'}
而
print data[u'X'][u'A']
結果是:
Traceback (most recent call last):
File "test.py", line 9, in <module>
print data[u'beans'][u'modelerType']
TypeError: list indices must be integers, not unicode
JSON中有2種類型的集合,數組和對象(有關更多信息,請參閱API)
例如,項目列表:
x = ['a', 'b', 'c', 'd']
x[2] // Returns 'c'
還有一個對象:
x = {"a": 10, "b": 20, "c": 30}
x['b'] // Returns 20
因此,假設您使用一個對象來存儲數據,則根本不需要索引號,而只需要屬性的名稱。 如果使用列表,則必須存儲列表索引。
可以將數組存儲在對象中,反之亦然。 例如:
x = [1, 2, 3, {"a": 10, "b": 20, "c": [30, 40, 50]}]
x[0] // Returns 1
x[3] // Returns {"a": 10, "b": 20, "c": [30, 40, 50]}
x[3]['a'] // Returns 10
x[3]['c'][2] // Returns 50
這可能更接近您要查找的內容:
models = ['JvmMetrics', 'MyMetrics']
filtered = filter(ldata['beans'], lambda x: x['modelerType'] in models)
除非您想根據JMX響應構建另一個指令,否則不可能有更好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.