2013-08-02 25 views
0

我正在嘗試處理一個json,我將從httprequest獲取到類中。但問題是,他將繼續崩潰當我嘗試將數據保存到我的課堂處理JSON到類

Boolean hasmore = tree.get("has_more").getBooleanValue(); 
    if (hasmore == true) { 
     System.out.println("Ik geraak hier"); 
     JsonNode resourceArrayNode=tree.get("photos"); 
     for(JsonNode jsonNode:resourceArrayNode){ 
      int height=jsonNode.get("height").getIntValue(); 
      result[i].setHeight(height); 
      //System.out.println(result[i].getHeight()); 
      i++; 
     } 

所以這是一個將處理後的圖像高度的代碼。問題是,當我設置爲我的類與javaexceptionpointer他會崩潰,我覺得很安靜奇怪,因爲一切都已經定好了

Exception in thread "main" java.lang.NullPointerException 
    at com.hp.gisware.panoramio.PanoramioResponseDeserializer.deserialize(PanoramioResponseDeserializer.java:29) 
    at com.hp.gisware.panoramio.PanoramioResponseDeserializer.deserialize(PanoramioResponseDeserializer.java:15) 
    at org.codehaus.jackson.map.ObjectReader._bindAndClose(ObjectReader.java:768) 
    at org.codehaus.jackson.map.ObjectReader.readValue(ObjectReader.java:460) 
    at com.hp.gisware.panoramio.GenericJsonPanoramioGeocoder.transmitLocation(GenericJsonPanoramioGeocoder.java:33) 
    at com.hp.gisware.panoramio.PanoramioRunner.main(PanoramioRunner.java:26) 
Disconnected from the target VM, address: '127.0.0.1:58050', transport: 'socket' 
+0

您是否嘗試過Google的Gson API?這很容易用來將JSON響應轉換爲Java類... – MikO

+0

將確切的異常消息複製/粘貼到您的問題中。 (並學習如何解釋異常信息。) –

+0

這不是一個完全的答案,而是一個建議; JSON簡單的庫。這是超輕量級,並具有所有必需品。請參閱:http://code.google.com/p/json-simple/ – snh

回答

1

聽起來好像寫入結果數組時發生空指針異常。 它已被正確初始化?將這個JSON數組(可以是任意長度)寫入一個java數組(聲明爲固定長度)似乎是一個不錯的選擇。你可以像列表一樣使用集合嗎?

無論是那個或get(「高度」)返回null。 您應該取消引用之前可能檢查:

if(jsonNode.has("Height")) { 
    int height=jsonNode.get("height").getIntValue(); 
    result[i].setHeight(height); 
} 

否則請在郵件問題Java異常消息。

編輯:(增加堆棧跟蹤) 好吧,那很奇怪。堆棧跟蹤看起來不像您的代碼 - 至少沒有任何方法名稱匹配您發佈的代碼中的任何內容。難道這是來自另一個線程嗎?可能你的代碼在另一個線程中觸發代碼來發送/接收JSON消息?你可以嘗試添加一個try-catch塊捕捉NullPointerException異常,到veryify它實際上正在從這個代碼塊

+0

將消息添加到我的問題 – stevedc

0

有許多庫,可以幫助你解析JSON對象成一個Java類。谷歌的GSON https://code.google.com/p/google-gson/

和傑克遜 http://jackson.codehaus.org/

你似乎使用傑克遜,我想。請指定您使用的庫和版本併發布堆棧跟蹤,以便我們可以進一步幫助您。而且,我們似乎也生活在同一個國家:荷蘭。

+0

這不是JSON,因爲如果我調試它會得到一個高度的結果,但它不會傳遞給類 – stevedc

+0

@stevedc給我們的堆棧跟蹤。 –

+0

這個國家如何重要?傑克遜是不是在世界其他地方工作 –

0

問題解決了我did'nt聲明每個對象的結果並不像它的類的新對象拋出