2017-05-08 100 views
1

我的JSON字符串是:使用GSON解析從Ajax請求一個JSON陣列

[{"name":"51","value":"0"},{"name":"52","value":"0"},{"name":"53","value":"5"},{"name":"54","value":"1"},{"name":"106","value":"0"},{"name":"107","value":"0"},{"name":"108","value":"3"}] 

我試圖做的事:

Gson gson = new Gson(); 
    class Wrapper{ 
     String name; 
     String value;  
    } 
Wrapper[] arr = gson.fromJson(request.getParameter("data"), Wrapper[].class); 

然後:

for (Wrapper arr1 : arr) { 
     if(Long.parseLong(arr1.value)!=0){ 
      listeProduits.add(ServiceMetier.getProduitById(Long.parseLong(arr1.name))); 
      listeQuantites.add(Long.parseLong(arr1.value)); 
     } 
    } 

但我總是得到:

May 08, 2017 11:32:06 AM org.apache.catalina.core.StandardWrapperValve 
invoke 
SEVERE: Servlet.service() for servlet [ActionServlet] in context with path 
[/Gustatif_Web] threw exception 
java.lang.NullPointerException 

空指針在arr1上。 我在做我的JSON解析錯誤?

編輯: 一個問題是在方法內部有Wrapper類,另一個問題在另一個項目的依賴關係中更深。

+1

你試過調試嗎?調試有幫助。 – f1sh

+0

調試時,我看到變量arr是一個由7個元素組成的數組,但變量arr [1]爲空 – dannemp

+0

[將匿名Java對象類型轉換爲使用GSon的JSON]的副本(http://stackoverflow.com/questions/26791752/convert-anonymous-java-object-types-to-json-using-gson)。只需將您當前所用方法的'Wrapper'類移出**即可。 –

回答

0

我試過了;你的代碼有一點小錯誤;你必須創建一個新的java類 - 包裝器,不要成爲這個方法的內部類。 enter image description here