gpt4 book ai didi

java - Json 输出生成双引号中的数字,如字符串

转载 作者:行者123 更新时间:2023-12-02 12:06:18 25 4
gpt4 key购买 nike

我需要生成带有数字和字符串的 json 输出,两者在 REST API 调用中都用双引号引起来。

示例:

[
{
"LastName":"abc",
"FirstName":"xyz",
"Id":"123",
},
{
"LastName":"mno",
"FirstName":"pqr",
"Id":"456",
}
]

正如你所看到的,上面的输出就是我所需要的。

但是数字 123 和 456 不带双引号,因为它们是数字。有谁知道解决方法吗?

我正在使用 org.json.JSONObject。我的应用程序首先生成一个 XML,然后使用以下代码行将其转换为 JSON:

JSONObject json = XML.toJSONObject(xml);
String jsonString = json.toString(PRINT_INDENT_FACTOR);

上面的 jsonString 在 REST API 调用中直接呈现在浏览器上。数字显示时不带双引号。 JSONObject库下有什么属性可以解决这个问题吗?

提前致谢!

======================编辑1 ===================

我根据评论中提供的建议和链接尝试了以下代码,方法是将库更改为使用 GSon 2.2.2 jar 而不是 JSONObject

GsonBuilder gb = new GsonBuilder();
gb.setPrettyPrinting();
gb.disableHtmlEscaping();
gb.setLongSerializationPolicy( LongSerializationPolicy.STRING );
Gson gson = gb.create();
File fXmlFile = new File("\\path\\test.xml");
String str = FileUtils.readFileToString(fXmlFile);
System.out.println(gson.toJson(str));

但是输出仍然是没有双引号的数字!!!! :(

我做错了什么?

======================编辑2 ===================

好的,LongSerializationPolicy.STRING 仅适用于长整型,不适用于十进制\浮点型。因此长值显示在双引号中。那么 int 、 float 和小数呢?这些也是数值。如何用双引号显示它们?

======================编辑3 ===================

将我的库更改为 jackson one 并使用 jackson-dataformat-xml-2.9.2.jar 来获取 JSON。所以数字现在出现在双引号中。小数、 float 、整数等。但是,整个 XML 不会被解析。仅解析标签的一部分。它缺少许多其他标签。我在这里读过另一篇 post ,已知它有局限性。

======================编辑4 ===================

我刚刚使用正则表达式完成了字符串替换。 有效。

jsonString = jsonString.replaceAll(":\s([\d]+)", ":\"$1\"");

最佳答案

只需在通过 Integer.toString(i) 或 String.valueOf(i) 之前将它们转换为字符串即可

编辑:

如果您愿意,您可以将 JSONObject 子类化并覆盖 numberToString() 方法以包含引号

或者

对结果字符串使用一些正则表达式操作来添加引号。不幸的是,我不擅长正则表达式,但也许其他人可以帮助你

关于java - Json 输出生成双引号中的数字,如字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46891106/

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