gpt4 book ai didi

java - 如何在 json 字符串 java 中的数字之间留一个空格?

转载 作者:行者123 更新时间:2023-11-30 08:44:45 25 4
gpt4 key购买 nike

在我下面的代码中,我使用 gson 制作了一个 json 字符串:

private String generateData(Map<String, Map<Integer, Set<Integer>>> nodeTable, int i) {
JsonObject jsonObject = new JsonObject();

Set<Integer> pp = nodeTable.get("TEXTER").get(i);
Set<Integer> sp = nodeTable.get("PETER").get(i);

// my above pp and sp variables shows correct values with one space between numbers.

jsonObject.addProperty("description", "Hello. World");
jsonObject.add("data1", gson.toJsonTree(pp));
jsonObject.add("data2", gson.toJsonTree(sp));

System.out.println(jsonObject.toString());

return jsonObject.toString();
}

当我得到我的json字符串时,我是这样得到的。正如您在逗号后看到的那样,所有内容都彼此相邻,没有任何空格。我不想那样。

{"description":"Hello. World.","data1":[0,273,546,819,1092,559],"data2":[816,1644,1368,276]}

我想在 data1 和 data2 变量中的数字之间留一个空格,如下所示:

{"description":"Hello. World.","data1":[0, 273, 546, 819, 1092, 559],"data2":[816, 1644, 1368, 276]}

这有可能通过使用 gson 或其他方式来实现吗?

最佳答案

这似乎是一个可能存在错误的装饰性请求。最简单的方法可能是使用正则表达式:

jsonString = jsonString
.replaceAll("(\\d),(\\d)", "$1, $2")
.replaceAll("(\\d),(\\d)", "$1, $2")

上面的行只是捕获任何数字 + 逗号 + 数字序列,并在捕获和恢复的两个数字之间添加一个空格。由于 java 只捕获一次匹配,因此不允许交叉,我们在这里做了两次。

不是那么严格但不需要双重替换的替代方案:

jsonString = jsonString.replaceAll(",(\\d)", ", $1")

这里的潜在错误是这适用于整个 JSON 字符串,而不仅仅是编码集。

正确的方法是为 GSON 使用自定义设置格式化程序。

顺便说一句, map 中的 map 需要类。

关于java - 如何在 json 字符串 java 中的数字之间留一个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651395/

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