JQuery Ajax Call: как получить JsonArray? - PullRequest
0 голосов
/ 08 мая 2019

Я нахожу проблему, когда пытаюсь получить данные из веб-службы, которая возвращает данные в виде 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 голосов
/ 08 мая 2019

JsonArray необходимо проанализировать в list в java и затем вернуть. Тогда все работало нормально.

ArrayList<Object> yourArray = new Gson().fromJson(jsonArrayObj, new TypeToken<List<Object>>(){}.getType());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...