【问题标题】:Java org.json.simple.JsonArray cannot get JsonObjectsJava org.json.simple.JsonArray 无法获取 JsonObjects
【发布时间】: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

标签: java arrays json


【解决方案1】:

您可以使用迭代器来获取您的 json 对象

Iterator i = transArr.iterator();
JSONObject slide = i.next();
//do whatever you need

【讨论】:

  • 谢谢,我也试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2013-11-20
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多