2016-07-15 123 views
-4

通過data = json.load(fp)從文件加載JSON後,我想遍歷那名在JSON,排除當然所有特殊的Python符號的所有項目。 這是如何正確完成的?遍歷所有項目中JSON對象

+3

你是什麼 「特殊的Python符號」 是什麼意思?按照定義,json只保存對應於'int','str','list','dict'等的原始數據類型。除此之外的任何內容都只能作爲任意的'str'內容,而不能解釋。 – MisterMiyagi

+0

「正確」是什麼意思?你有一個Python字典(或列表),所以你將如何迭代或訪問? –

回答

5

data應該是在這一點上一個普通的集合,所以你迭代它你會遍歷任何其他列表/字典/無論以同樣的方式。來自load的事實不會對您造成任何額外要求。

下面是一個使用loads一個例子,這在原則上是相似的:

​​

結果:

1 
2 
3 

編輯:如果你問「怎麼我遍歷所有在我的數據值,包括那些包含內部深層嵌套集合「,那麼你可以這樣做:

import json 
my_json_data = """[ 
    1, 
    { 
     "2": 3, 
     "4": [ 
      "5", 
      "6", 
      "7" 
     ] 
    }, 
    8, 
    9 
]""" 

def recursive_iter(obj): 
    if isinstance(obj, dict): 
     for item in obj.values(): 
      yield from recursive_iter(item) 
    elif any(isinstance(obj, t) for t in (list, tuple)): 
     for item in obj: 
      yield from recursive_iter(item) 
    else: 
     yield obj 

data = json.loads(my_json_data) 
for item in recursive_iter(data): 
    print(item) 

結果:

1 
5 
6 
7 
3 
8 
9