gpt4 book ai didi

java - 管理java gson后,json文件中的unicode字符不会被转换

转载 作者:行者123 更新时间:2023-12-02 04:12:01 24 4
gpt4 key购买 nike

我正在尝试用java中的gson管理json文件;该文件包含一些 unicode 字符,我不想转换它们;我修改后的json文件的结构树必须和原来的一样。

file.json:

{"name":"\u300AMWXT\u300B - xL","olsa":"","pose":"\u300ATHE\u300BP97UL","resa":"33.0","utrk":"101351",...}

我尝试过这段代码:

FileReader filer = new FileReader(".\\file.json"); 
BufferedReader file = new BufferedReader(filer);
String content;
try {
content = file.readLine();
file.close();
Gson gson = new Gson();
JsonElement element = gson.fromJson(content, JsonElement.class);
JsonObject jsonObj = element.getAsJsonObject();
int utrk = jsonObj.get("utrk").getAsInt();
utrk = utrk + (215);
jsonObj.addProperty("utrk", utrk);
...}

一切正常,但在 JsonElement 中元素name成为《MWXT》 - xLpose做同样的事情,所以结果不是我想要的。有什么建议吗?

有一个类似的问题here但答案并没有解决两年前的原始问题,我认为两年内可以做出很多改变......

最佳答案

实际上,unicode 字符的一大优点是任何客户端都可以像其字符表示一样读取和处理代码“\u...”。例如,如果在 html 文件中,如果您将每个字符替换为其 unicode 表示形式,则浏览器将照常读取它。 IE。将“Hello world”中的“H”替换为“\u0048”(“H”的 unicode),在浏览器中您仍然会看到“Hello world”。但在这种情况下,它对你不利,因为 Gson 只是用它们的符号替换 unicodes。

我的建议可能并不完美,但它会起作用。在转换对象之前,请记住 unicode 符号的位置,并在转换后将它们更改回 unicode。这里有一个可以帮助你的工具:有一个开源库 MgntUtils(由我编写),它有一个实用程序,可以将任何字符串转换为 unicode 序列,反之亦然。

你可以这样做:

String s = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("Hello world");

它会给你字符串:“\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u006f\u0072\u006c\u0064”然后你可以这样做:

    String s 
= StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString("\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u006f\u0072\u006c\u0064");

它会返回字符串“Hello world”。它适用于任何语言。以下是解释如何获取该库的文章的链接:Open Source Java library with stack trace filtering, Silent String parsing Unicode converter and Version comparison查找标题为“字符串 Unicode 转换器”的段落

以下是 Maven 工件的链接:MgntUtils maven artifacts这是 Github 的链接包含源代码和 javadoc。这里是 javadoc

关于java - 管理java gson后,json文件中的unicode字符不会被转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56682684/

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