JQuery Ajax调用:如何获取JsonArray?

时间:2019-05-08 11:29:56

标签: java jquery json ajax web-services

我在尝试从Web服务获取数据时发现一个问题,该服务以JsonArray(com.google.gson.JsonArray)的形式返回数据。 我收到undefined中的数据时得到UI。 在java中,我低于exception

Caused by: org.codehaus.jackson.map.JsonMappingException: (was java.lang.IllegalStateException) (through reference chain: com.google.gson.JsonArray["asString"])

我尝试了各种方法,但似乎无济于事。请找到我尝试过的代码。

Java

@GET
@Path("/fetchData")
@Produces(MediaType.APPLICATION_JSON)
public JsonArray fetchData(@QueryParam("term") String id) 
{
    List<Object[]> listObj = new ArrayList<Object[]>();
    JsonArray jsonArrayObj = new JsonArray();
    try
    {           
        listObj = manager.planningData(id.toString());
        for (Object[] obj : listObj) 
        {
            JsonObject jsonObj = new JsonObject();
            if(obj[0]!=null)
            {
                jsonObj.addProperty("ID", obj[0].toString());
            }

            jsonArrayObj.add(jsonObj);
        }
    }

    catch(Exception e)
    {
      System.out.println(e);
    }
    return jsonArrayObj;
}

jQuery

 $.ajax({
            type : 'GET',
            url : contextPath+'/rest/fetchDataPlan/fetchData?value='+valueId+'',
            dataType:'json',
            data : {
term:valueId,
            },
            success : function(data) {
                if (data) 
                {
                    console.log("test");
                }
                else 
                {
                    console.log("no work");
                }
            },
            error : function(err) {
                console.log("error occurred  "+err.message);
            }
        });

1 个答案:

答案 0 :(得分:0)

JsonArray需要在list中解析为java,然后返回。然后效果很好。

ArrayList<Object> yourArray = new Gson().fromJson(jsonArrayObj, new TypeToken<List<Object>>(){}.getType());