Java org.json.simple.JsonArray无法获取JsonObjects

时间:2017-07-24 22:05:27

标签: java arrays json

您好,并提前谢谢您。我一直在开发一个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,pickup_longitude = -1.4578941,pickup_latitude = 33.45548978},{catalogue_id = 1,qty = 4,pickup_longitude = -1.4578941,pickup_latitude = 33.45548978}]   [{&#34; catalogue_id&#34;:1,&#34;数量&#34;:2&#34; pickup_longitude&#34;: - 1.4578941&#34; pickup_latitude&#34;:33.45548978},{& #34; catalogue_id&#34;:2&#34;数量&#34;:3,&#34; pickup_longitude&#34;: - 1.4578941&#34; pickup_latitude&#34;:33.45548978},{&#34; catalogue_id&#34;:1,&#34;数量&#34:4,&#34; pickup_longitude&#34;: - 1.4578941&#34; pickup_latitude&#34;:33.45548978}]

无论我做什么,代码都会停止。我现在已经被困在这个夜晚了。我可以在这个方法中手动构建JsonArray,这可以正常工作,并可以遍历它并打破每个JsonObject。当我使用toString或toJson输出手动构建的JsonArray时,输出与上面相同,但顺序不同。我已经用尽所有可以在stackOverflow和google上找到的示例,所以我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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