2012-08-22 52 views
1

詹金斯給我JSON從http://jenkins.net/jobs/MyJob/lastBuild/api/json解析JSON,一旦散,然後零

然後我用HTTParty得到它,像這樣:

response = self.get(url, options) 
change = response['changeSet']['items'][0] 

這給了我最後的內容發生變化。 change.class返回「哈希」。 如果我試試這個:

change = response['changeSet']['items'][0]['revision'] 

截至JSON期待所暗示的,我得到 「上NilObject未定義的方法 '[]'」。

我在做什麼錯?

EDIT3:

當然,問題出在用戶和鍵盤之間。該方法首先在另一個JSON上調用,因爲它輪詢多個項目的更改,並且其中一個返回的JSON對象不包含這些鍵。 D'哦! 對不起。

回答

1

如果你遇到那種錯誤,你正在打一個空的鍵,然後試圖使用它,就好像它被填充。沒有看到你的JSON是什麼,很難說,但其中一個失敗。您將要檢查這些:

response['changeSet'] 
response['changeSet']['items'] 
response['changeSet']['items'][0] 

如果任何這些最終被nil那麼你可以針點的問題。 JSON可以作爲任意結構返回,因此在不進行任何測試的情況下鏈接一堆調用會導致麻煩。

+0

response ['changeSet'] ['items'] [0] .class 返回'哈希',所以這很好。也可以顯示內容。但是,如果我試圖去「更深」,所提到的錯誤出現了。 – smlgbl

+0

如果這是'Hash',那麼它不是'nil',它應該可以工作。你確定你正在調試有問題的人嗎?您可能正在查看有效的記錄,然後在一個循環中處理無效的記錄。 – tadman

+0

另一個奇怪的是它應該是基於你的JSON的'Array'。有些事情是不對的。嘗試分配'h = response ['changeSet'] ['items'] [0]',然後測試'h.inspect'的結果。 – tadman