【发布时间】:2015-06-12 00:45:41
【问题描述】:
我需要按插入顺序排列键/值对,因此我选择使用LinkedHashMap 而不是HashMap。但我需要将LinkedHashMap 转换为JSON 字符串,其中LinkedHashMap 中的顺序保留在字符串中。
但目前我正在通过以下方式实现它:
- 首先将 LinkedHashMap 转换为 JSON。
-
然后将 JSON 转换为字符串。
import java.util.LinkedHashMap; import java.util.Map; import org.json.JSONObject; public class cdf { public static void main(String[] args) { Map<String,String > myLinkedHashMap = new LinkedHashMap<String, String>(); myLinkedHashMap.put("1","first"); myLinkedHashMap.put("2","second"); myLinkedHashMap.put("3","third"); JSONObject json = new JSONObject(myLinkedHashMap); System.out.println(json.toString()); } }
输出是:
{"3":"third","2":"second","1":"first"} .
但我希望它按插入键的顺序,如下所示:
{"1":"first","2":"second","3":"third"}
一旦我将LinkedHashMap 转换为 JSON,它就会失去它的顺序(很明显 JSON 没有顺序的概念),因此字符串也是无序的。现在,如何生成一个顺序与LinkedHashMap相同的JSON字符串?
【问题讨论】:
-
如果您在一个简短但完整的程序中向我们展示这个问题,这将真的有所帮助...(代码、预期输出、实际输出。)跨度>
-
您可以为每个 JSON 对象添加一个元素
order,这样您就可以在接收和解析 JSON 后跟踪字符串排序。 -
@JonSkeet:我现在已经编辑了这个问题..希望这已经足够清楚了。
-
嗯。我机器上的输出只是
{}- 但无论如何它都没有编译开始。请使用您编译并运行的实际代码更新问题... -
@MrPolywhirl:我已经回滚到修订版 4,因为虽然文本可能不太好,但它至少包含一个(有缺陷的)示例......
标签: java json string hashmap linkedhashmap