如何在java

时间:2016-05-04 05:29:03

标签: java jsonp

我无法按顺序打印我的json数据。我的代码如下:

import org.json.simple.JSONObject;

public class SendingJSONDATAinPost {

    public static void main(String[] args) {

        JSONObject shipmentObject = new JSONObject();
        shipmentObject.put("created_at", "2015-09-1001: 50");
        shipmentObject.put("callback_url","callback/url");

        System.out.println("JSON OUTPUT->"+shipmentObject.toJSONString());  
    }
}

我的输出是:

JSON OUTPUT-> {"callback_url":"callback\/url","created_at":"2015-09-1001: 50"}

但我需要这样:

JSON OUTPUT-> {"created_at":"2015-09-1001: 50","callback_url":"callback\/url"}

2 个答案:

答案 0 :(得分:0)

您不能,因为此对象使用true作为存储:

HashMap

所以订单不会被保留。这是来自 public class JSONObject extends HashMap 的javadoc:

  

JSON对象。键值对是无序的。

为了按照自己的方式进行操作,您需要在JSONObject或类似的地方存储某个输入键,然后从ArrayList中取出该列表中的每个值。

答案 1 :(得分:0)

JSONObject实现了java.util.Map ,并在内部使用HashMap实现,因此无法按顺序打印对象,因为HashMap不能保持顺序。

但是,如果要实现此功能,请尝试维护两个 JSONArray 对象,一个包含所有键值,另一个包含相应的值。 JSONArray实现了java.util.List ,并且能够维护顺序排序。