使用json时解析JSON字符串并保留key-data顺序-简单无需手动构造HashMap
Parsing JSON string and preserving key-data order when using json-simple without manually constructing HashMap
我知道这个话题已经被讨论过了,使用 LinkedHashMap
是一种 '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"}
有没有办法让输出与给定的输入完全匹配?
我认为默认是不可能的。
你可以参考这个RFC https://www.ietf.org/rfc/rfc4627.txt
An array is an ordered sequence of zero or more values.
如果你想破解它,你可以覆盖数据结构并使用保留顺序的数据结构。
在Json 属性 结构中,顺序无关紧要。但是如果您有特定的顺序,您可以使用 Jackson 以您想要的方式对它们进行排序,无论是在您的服务器还是客户端应用程序中。
我知道这个话题已经被讨论过了,使用 LinkedHashMap
是一种 '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"}
有没有办法让输出与给定的输入完全匹配?
我认为默认是不可能的。
你可以参考这个RFC https://www.ietf.org/rfc/rfc4627.txt
An array is an ordered sequence of zero or more values.
如果你想破解它,你可以覆盖数据结构并使用保留顺序的数据结构。
在Json 属性 结构中,顺序无关紧要。但是如果您有特定的顺序,您可以使用 Jackson 以您想要的方式对它们进行排序,无论是在您的服务器还是客户端应用程序中。