gpt4 book ai didi

java - 从 LinkedHashMap 构建有序的 JSON 字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:07:02 24 4
gpt4 key购买 nike

我需要按插入顺序排列键/值对,因此我选择使用 LinkedHashMap 而不是 HashMap。但我需要将 LinkedHashMap 转换为 JSON 字符串,其中 LinkedHashMap 中的顺序保留在字符串中。

但目前我正在通过以下方式实现它:

  1. 首先将 LinkedHashMap 转换为 JSON。
  2. 然后将 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 字符串?

最佳答案

Gson如果你的 friend 。这会将有序 map 打印成有序的 JSON 字符串。

如果您想保留插入顺序,请使用 LinkedHashMap

我使用的是最新版本的Gson(2.8.5),您可以通过本文底部的以下选项下载。

import java.util.*;
import com.google.gson.Gson;

public class OrderedJson {
public static void main(String[] args) {
// Create a new ordered map.
Map<String,String> myLinkedHashMap = new LinkedHashMap<String, String>();

// Add items, in-order, to the map.
myLinkedHashMap.put("1", "first");
myLinkedHashMap.put("2", "second");
myLinkedHashMap.put("3", "third");

// Instantiate a new Gson instance.
Gson gson = new Gson();

// Convert the ordered map into an ordered string.
String json = gson.toJson(myLinkedHashMap, LinkedHashMap.class);

// Print ordered string.
System.out.println(json); // {"1":"first","2":"second","3":"third"}
}
}

如果您希望项目始终插入正确的位置,请改用 TreeMap

import java.util.*;
import com.google.gson.Gson;

public class OrderedJson {
public static void main(String[] args) {
// Create a new ordered map.
Map<String,String> myTreeHashMap = new TreeMap<String, String>();

// Add items, in any order, to the map.
myTreeHashMap.put("3", "third");
myTreeHashMap.put("1", "first");
myTreeHashMap.put("2", "second");

// Instantiate a new Gson instance.
Gson gson = new Gson();

// Convert the ordered map into an ordered string.
String json = gson.toJson(myTreeHashMap, TreeMap.class);

// Print ordered string.
System.out.println(json); // {"1":"first","2":"second","3":"third"}
}
}

依赖选项

行家

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>

Gradle

compile 'com.google.code.gson:gson:2.8.5'

或者您可以访问Maven Central更多下载选项。

关于java - 从 LinkedHashMap 构建有序的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29491281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com