2017-05-08 110 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