我正在尝试用java中的gson管理json文件;该文件包含一些 unicode 字符,我不想转换它们;我更改后的json文件的结构树必须与原始的相同。
The 文件.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
become 《MWXT》 - xL
and pose
做同样的事情,所以结果不是我想要的。
有什么建议吗?
有一个类似的问题here https://stackoverflow.com/questions/43091804但答案并没有解决两年前的原始问题,我认为两年内可以做出很多改变......
实际上,unicode 字符的一大优点是任何客户端都可以像其字符表示一样读取和处理代码“\u...”。例如,如果在 html 文件中,如果您将每个字符替换为其 unicode 表示形式,则浏览器将照常读取它。 IE。将“Hello world”中的“H”替换为“\u0048”(“H”的 unicode),在浏览器中您仍然会看到“Hello world”。但在这种情况下,它对你不利,因为 Gson 只是用它们的符号替换 unicode。
我的建议可能并不完美,但它会起作用。在转换对象之前,请记住 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”。它适用于任何语言。以下是解释如何获取该库的文章的链接:开源 Java 库,具有堆栈跟踪过滤、静默字符串解析 Unicode 转换器和版本比较 https://www.linkedin.com/pulse/open-source-java-library-some-useful-utilities-michael-gantman查找标题为“字符串 Unicode 转换器"
以下是 Maven 工件的链接:MgntUtils Maven 工件 https://search.maven.org/search?q=g:com.github.michaelgantman%20AND%20a:MgntUtils这是一个链接Github https://github.com/michaelgantman/Mgnt包含源代码和 javadoc。这里是javadoc http://michaelgantman.github.io/Mgnt/docs/com/mgnt/utils/StringUnicodeEncoderDecoder.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)