【发布时间】:2011-05-29 18:39:15
【问题描述】:
我正在使用此处提供的 JSON 库http://www.json.org/java/index.html 将我必须的 json 字符串转换为 CSV。 但我遇到的问题是,转换后键的顺序丢失了。
这是转换代码:
JSONObject jo = new JSONObject(someString);
JSONArray ja = jo.getJSONArray("items");
String s = CDL.toString(ja);
System.out.println(s);
这是“someString”的内容:
{
"items":
[
{
"WR":"qwe",
"QU":"asd",
"QA":"end",
"WO":"hasd",
"NO":"qwer"
},
]
}
这是结果:
WO,QU,WR,QA,NO
hasd,asd,qwe,end,qwer
虽然我希望保持键的顺序:
WR,QU,QA,WO,NO
qwe,asd,end,hasd,qwer
有什么方法可以让我使用这个库获得这个结果?如果没有,是否有任何其他库可以提供保持结果中键顺序的功能?
【问题讨论】:
-
字典未排序。我什至认为 JSON 不能保证顺序。
-
感谢您的信息。但是我别无选择,只能在我的应用程序中使用 JSON,并且我的应用程序需要保持键的顺序:(
-
就我而言,问题不在于缺少订单,而在于它是不确定的。有时我在密钥
bar之前得到密钥foo,有时在foo之前得到bar。这使得编写测试变得困难。 -
我也遇到过这个需求,不过是为了实时测试时的快速日志对比。对于高吞吐量应用程序,我需要实时比较新生成的日志和以前生成的日志。还有其他方法可以做到这一点,但我希望日志采用 JSON 格式。但是,为了最大限度地减少 CPU 使用,我正在编写自己的直接到字符串的 JSON 编写器。我根本不需要内部结构,我可以维护关键顺序,以便对日志进行快速字符串比较。有充分的理由需要可预测的顺序。
-
编写您自己的代码以将 JSON 转换为特定排序的 CSV 文件,这样您就可以尊重这两种格式应该是什么。