java arraylist的Json对象

java arraylist的Json对象,java,json,gson,Java,Json,Gson,我已经将两个值从ajax传递到我的servlet 我曾经 JsonObject data = new Gson().fromJson(request.getReader(), JsonObject.class); System.out.println(data); 这就是输出 {“0”:“31/01/2017”,“1”:“19/01/2017”} 现在我想将这些数据转换成java arraylist,但不确定如何转换 我试过了 Gson googleJson = new Gson(); Jso

我已经将两个值从ajax传递到我的servlet

我曾经

JsonObject data = new Gson().fromJson(request.getReader(), JsonObject.class);
System.out.println(data);
这就是输出

{“0”:“31/01/2017”,“1”:“19/01/2017”}

现在我想将这些数据转换成java arraylist,但不确定如何转换

我试过了

Gson googleJson = new Gson();
JsonObject data = googleJson.fromJson(request.getReader(), JsonObject.class);
System.out.println(data);
JsonArray jsonArr = data.getAsJsonArray();
// jsonArr.

ArrayList jsonObjList = googleJson.fromJson(jsonArr, ArrayList.class);
for(int i=0; i< jsonObjList.size(); i++) {
    System.out.println(jsonObjList.get(i));
}
Gson googleJson=new Gson();
JsonObject data=googleJson.fromJson(request.getReader(),JsonObject.class);
系统输出打印项次(数据);
JsonArray jsonArr=data.getAsJsonArray();
//杰索纳尔。
ArrayList jsonObjList=googleJson.fromJson(jsonArr,ArrayList.class);
对于(int i=0;i
但我犯了一个错误

java.lang.IllegalStateException:这不是JSON数组



谁能帮帮我?谢谢。

要使Json成为有效的JsonArray对象,您应该将其设置为正确的格式。您可以更改ajax返回的json字符串吗?如果是,您应该将其更改为以下内容:

Gson googleJson = new Gson();
JsonObject data = googleJson.fromJson("{test: [{\"0\":\"31/01/2017\"},{\"1\":\"19/01/2017\"}]}", JsonObject.class);
System.out.println(data);
JsonArray jsonArr = data.getAsJsonArray("test");

ArrayList jsonObjList = googleJson.fromJson(jsonArr, ArrayList.class);
for(int i=0; i< jsonObjList.size(); i++) {
    System.out.println(jsonObjList.get(i));
}
Gson googleJson=new Gson();
JsonObject data=googleJson.fromJson({test:[{\'0\':\'31/01/2017\'},{\'1\':\'19/01/2017\'}]},JsonObject.class);
系统输出打印项次(数据);
JsonArray jsonArr=data.getAsJsonArray(“测试”);
ArrayList jsonObjList=googleJson.fromJson(jsonArr,ArrayList.class);
对于(int i=0;i

如果没有,您应该自己解析它,并将其转换为您想要的任何内容。

创建
JsonArray
的实例,然后使用key将json元素添加到该数组中

以下是您的解决方案:

Gson googleJson = new Gson();
JsonObject data = googleJson.fromJson(request.getReader(), JsonObject.class);
System.out.println(data);
JsonArray jsonArr = new JsonArray();

for(Entry<String, JsonElement> entry : data.entrySet()) {
    jsonArr.add(data.get(entry.getKey()));
}

ArrayList jsonObjList = googleJson.fromJson(jsonArr, ArrayList.class);
for(int i = 0; i < jsonObjList.size(); i++) {
    System.out.println(jsonObjList.get(i));
}
Gson googleJson=new Gson();
JsonObject data=googleJson.fromJson(request.getReader(),JsonObject.class);
系统输出打印项次(数据);
JsonArray jsonArr=新的JsonArray();
for(条目:data.entrySet()){
add(data.get(entry.getKey());
}
ArrayList jsonObjList=googleJson.fromJson(jsonArr,ArrayList.class);
对于(int i=0;i
您可以使用类似于
data.getAsString(“0”)
data.getAsString(“1”)
的东西,因为它是
JSONObject
如果我的数据大小不固定怎么办?这意味着数据可以超过2。一种方法是使用
entrySet()
并将所有键和值作为mapentry获取,另一种方法是创建POJO类,并使用相应的映射字段,这意味着POJO中的Hashmap可以改为使用Arraylist?我想肯定有办法将其作为Arraylist,你可以在你的问题中提到它作为要求,肯定会有人指导你