2014-04-15 69 views
0

我沒有試圖解析這個JSON數據,我只關心它的一小部分。試圖用python解析JSON數據

JSON數據

{ 
    "timestamp" : 1397555135361, 
    "sets" : { 
     "worldguard.markerset" : { 
      "areas" : { 
       "world_region_name" : { 
        "markup" : false, 
        "desc" : "What I really want.", 
        "weight" : 3, 
        "color" : "#FF0000", 
        "fillopacity" : 0.35, 
        "opacity" : 0.8, 
        "label" : "Region_name", 
        "ytop" : 65.0, 
        "fillcolor" : "#FF0000", 
        "z" : [846.0, 847.0, 847.0, 846.0], 
        "ybottom" : 65.0, 
        "x" : [773.0, 773.0, 774.0, 774.0] 
       } 
      } 
     } 
    } 
} 

我希望我正確複製它,這是一個非常大的文件,我只關心該地區的信息,它有。

還有這個json文件的其他部分,我不在乎,所以我沒有包含它們。但是我關心的'區域'下有很多項目。我只是不能工作,如何解析這些

import json 
from pprint import pprint 
json_data=open('marker_world.json') 

data = json.load(json_data) 


for item in data["sets"]["worldguard.markerset"]["areas"]: 
    print item 

我在乎每個地區的項目; desc,標籤,z,& x。

它似乎並沒有打印出該區域下的一切都像我希望我得到的是「u'w'」

我還沒有開始嘗試,並僅選擇的屏幕我關心的每個區域都有一點點。如果你能鍛鍊我所做的錯誤,那麼朝着正確的方向推進將會很好。

+0

的調試和修復這個最簡單的方法是打開一個'python'交互式shell和實驗。以'data = json.load(打開(...))'開始,然後用對象玩,直到你得到你想要的 – slezica

+0

我做了,我找出瞭如何去找我想要的部分,我只是無法工作了解如何執行for循環。以便我可以檢索所有區域數據。這樣我就可以玩弄字符串操作。 – TheDuncan

回答

1

以下是您可以從頭開始。

定義你從一個地區需要的密鑰列表,然後遍歷areas,爲每個區域得到你所定義的鍵的值:

keys = ['desc', 'label', 'x', 'z'] 
for area_key, area_items in data["sets"]["worldguard.markerset"]["areas"].iteritems(): 
    print area_key 
    for key in keys: 
     print '%s: %s' % (key, area_items[key]) 

打印:

world_region_name 
desc: What I really want. 
label: Region_name 
x: [773.0, 773.0, 774.0, 774.0] 
z: [846.0, 847.0, 847.0, 846.0] 
+0

哈哈,哇,我走了。謝謝。 – TheDuncan