【发布时间】:2017-07-24 22:05:27
【问题描述】:
您好,提前谢谢您。我一直在开发 REST Web 服务,到目前为止一切都很好。我决定使用 json.simple 库来处理提交给 Web 服务的 JSON 函数,但我真的很难利用我传递给如下方法的 JsonArray。该数组由一个或多个 JSON 对象组成,这些对象在另一个类中拼凑在一起并传递给此方法。在多次尝试以前的 json.simple 版本之后,我正在使用 json.simple 2.1.2,并且希望从数组中获取每个 JsonObject。
public createTransactions(JsonArray transArr){
for (int i = 0; i < transArr.size(); i++){
try {
Object obj = transArr.get(i); //Works Fine
//but
JsonObject transJsonObj = (JsonObject)transArr.get(i);
//Doesn't work, the stack trace shows no error but this doesn't
// run (outside the try it stops execution again with the stack
// trace showing no error.)
} catch (Exception e){
e.printStackTrace();
}
System.out.println(transArr.toString());
System.out.println(transArr.toJson());
//both work output below*
}
}
输出
*[{catalogue_id=1,qty=2,pickup_longitude=-1.4578941,pickup_latitude=33.45548978},{catalogue_id=2,qty=3,picky_longitude=-1.4578941,pickup_latitude=33.45548978},{catalogue_id=1,qty= 4、pickup_longitude=-1.4578941、pickup_latitude=33.45548978}] [{"catalogue_id":1,"qty":2,"pickup_longitude":-1.4578941,"pickup_latitude":33.45548978},{"catalogue_id":2,"qty":3,"pickup_longitude":-1.4578941,"pickup_latitude ":33.45548978},{"catalogue_id":1,"qty":4,"pickup_longitude":-1.4578941,"pickup_latitude":33.45548978}]
无论我做什么,代码都会停在这一点上。我已经被困了好几个晚上了。我可以在这种方法中手动构建 JsonArray 并且效果很好,并且可以循环遍历它并分解每个 JsonObject。当我使用 toString 或 toJson 输出手动构建的 JsonArray 时,输出与上面相同,尽管顺序不同。我已经用尽了我可以在 stackOverflow 和 google 上找到的所有示例,因此不胜感激。
【问题讨论】:
-
它对我来说很好用。传递给方法的 JsonArray 的构造可能有问题。我的测试代码:
JsonArray jsonArray = new JsonArray(); JsonObject obj = new JsonObject(); obj.put("test", "testVal"); obj.put("testI", new Integer(1)); JsonObject obj_1 = new JsonObject(); obj_1.put("test", "testVal"); obj_1.put("testI", new Integer(2)); jsonArray.add(obj); jsonArray.add(obj_1); createTransactions(jsonArray); -
谢谢,我想也许和我可以建一个一样的方法。 xxx