首页 > 解决方案 > 使用 json-simple 时解析 JSON 字符串并保留键数据顺序,无需手动构造 HashMap

问题描述

我知道这个话题已经被讨论过了,使用 aLinkedHashMap是一种“hacky”方式来操纵它,但是如果我有数千个 JSON 字符串作为输入,并且最终想要以原始形式输出它们,无论如何都可以在不手动构建 LinkedHashMaps的情况下保留订单。

例如这样的字符串

{"key":1,"surname":"Reed","given":"Ryan","address":{"state":"CA","postal":"90210"},"gender":"M"}

现在,如果我像这样解析对象:

JSONObject jsonObject = (JSONObject) parser.parse(str);
System.out.println(jsonObject);

我的输出将如下所示:

{"surname":"Reed","gender":M,"address":{"postalCode":"90210","state":"CA"},"key":1,"given":"Ryan"}

无论如何我可以让输出与给定的输入完全匹配吗?

标签: javajsonjson-simple

解决方案


在 Json 属性结构中,顺序无关紧要。但是,如果您有特定的订单,您可以使用 Jackson 以您想要的方式订购它们,无论是在您的服务器和客户端应用程序中。

https://www.baeldung.com/jackson

http://www.davismol.net/2016/10/24/jackson-json-using-jsonpropertyorder-annotation-to-define-properties-serialization-order/


推荐阅读