Biraz know-how, ama yukarıda o örnekte:
In [1]: import json
In [2]: s = """\
...: {
...: "A": {
...: "B": {
...: "unknown": {
...: "1": "F",
...: "maindata": [
...: {
...: "Info": "TEXT"
...: }
...: ]
...: }
...: }
...: }
...: }"""
In [3]: data = json.loads(s)
In [4]: data['A']['B']['unknown']['maindata'][0]['Info']
Out[4]: u'TEXT'
Temelde geçen bir sözlük olarak davranın iç içe geçmiş sözlüklerin değerlerini almak için tuşlar. Tek farklı bölüm, sonuç değerinin bir liste olduğu maindata
'u tıklamanızdır. Bunu işlemek için [0]
ilk elemanını çekip TEXT
değerini almak için Info
anahtarına erişiriz. unknown
değişen durumunda
, bunu kodunuzda bu noktada alacak 'bilinen' adını temsil eden bir değişken ile değiştirin olacaktır:
my_variable = 'some_name'
data['A']['B'][my_variable]['maindata'][0]['Info']
Ve olurdu eğer gerçekten okumak senin values()
içeren bir değişkendir
data['A']['B'].values()[0]['maindata'][0]['Info']
: Eğer unknown
herhangi bir noktada ne olduğunu bilmiyorsanız soru düzgün ilk kez, böyle bir şey yapabilir
[{u'1': u'F', u'maindata': [{u'Info': u'TEXT'}]}]
[0]
ile erişilebilen tek bir öğe listesi ve daha sonra yukarıdaki gibi devam edebilirsiniz. Bunun söz konusu sözlükte yalnızca bir öğe varlığına bağlı olduğunu unutmayın - daha fazla olsaydı bir bit ayarlamanız gerekirdi. Eğer bilinmeyen Sadece bilinmeyen anahtarla beri, işi yapmalıdır aşağıdaki
import json
s=json.loads('{"A":{"B":{"unknown":{"1":"F","maindata":[{"Info":"TEXT"}]}}}}')
i=s["A"]["B"].keys()
x=i[0] # Will store 'unknown' in x, whatever unknown is
print s['A']['B'][x]['maindata'][0]['Info'] #here x dictionary index is used after B as its value will be the value for unknown
Bu yapabileceği sabit bir yerde olduğunu söylediği gibi
ile değerini yazdırmak için. Bilinmeyen herhangi bir dize olabilir. – user1959942
Yani, bu noktada ne olursa olsun, adından bağımsız olarak ulaşmanız gerekiyor. – RocketDonkey
Evet, nedeni bilinmiyor = P, bu yüzden almak kolay olurdu. – user1959942