我需要按插入顺序使用键/值对,所以我选择使用 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 字符串?
原文由 Karthic Rao 发布,翻译遵循 CC BY-SA 4.0 许可协议
Gson 如果你的朋友。这会将有序地图打印成有序的 JSON 字符串。
如果要保留插入顺序,请使用
LinkedHashMap
。我使用的是最新版本的 Gson(2.8.5),您可以通过本文底部的以下选项下载它。
如果您希望项目始终插入正确的位置,请改用
TreeMap
。依赖选项
行家
摇篮
或者您可以访问 Maven Central 以获取更多下载选项。