管理java gson后,json文件中的unicode字符不会被转换[重复]

2024-04-16

我正在尝试用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(使用前将#替换为@)

管理java gson后,json文件中的unicode字符不会被转换[重复] 的相关文章

  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • Jackson JSON + Java 泛型

    我正在尝试将以下 JSON 反序列化 映射到List
  • Java将字符串解析为double

    如何解析字符串中的这个 Double 00034800 变成 Double 值 最后两位数字实际上是小数点 所以我正在寻找的结果是348 00 是否有这样的格式可以与十进制格式一起使用 Well String s 00034800 doub
  • Android:如何暂停和恢复可运行线程?

    我正在使用 postDelayed 可运行线程 当我按下按钮时 我需要暂停并恢复该线程 请任何人帮助我 这是我的主题 protected void animation music6 music4 postDelayed new Runnab
  • java程序有多少种结束方式?

    我知道使用 System exit 0 可以结束一个java程序 例如 如果我有一个JFrame窗口 它会关闭并结束程序 但我想知道还有多少其他方法 可以关闭它并结束程序 包括发生错误时 程序会被关闭 JFrame也会被关闭吗 添加到其他答
  • 如何在 Android 应用程序中隐藏 Flutterwave API 密钥

    我正在构建一个 Android 应用程序 目前正在将 Flutterwave 集成到我的应用程序中以进行支付 建议我永远不要将 Flutterwave API 密钥放在我的应用程序上 那么我该如何隐藏这些键呢 我正在使用 Retrofit
  • 为什么在 10 个 Java 线程中递增一个数字不会得到 10 的值?

    我不明白 a 的值为0 为什么 a 不是10 那段代码的运行过程是怎样的 是否需要从Java内存模型来分析 这是我的测试代码 package com study concurrent demo import lombok extern sl
  • Java LostFocus 和 InputVerifier,按反向制表符顺序移动

    我有一个 GUI 应用程序 它使用 InputVerifier 在产生焦点之前检查文本字段的内容 这都是很正常的 然而 昨天发现了一个问题 这似乎是一个错误 但我在任何地方都找不到任何提及它的地方 在我将其报告为错误之前 我想我应该问 我在
  • 使用 OkHttp 下载损坏的文件

    我编写的下载文件的方法总是会产生损坏的文件 public static String okDownloadToFileSync final String link final String fileName final boolean te
  • Mockito 和 Hamcrest:如何验证 Collection 参数的调用?

    我遇到了 Mockito 和 Hamcrest 的泛型问题 请假设以下界面 public interface Service void perform Collection
  • 2^31 次方的 Java 指数错误 [重复]

    这个问题在这里已经有答案了 我正在编写一个java程序来输出2的指数幂 顺便说一句 我不能使用Math pow 但是在 2 31 和 2 32 处我得到了其他东西 另外 我不打算接受负整数 My code class PrintPowers
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • Joshua Bloch 的构建器设计模式有何改进?

    早在 2007 年 我就读过一篇关于 Joshua Blochs 所采用的 构建器模式 的文章 以及如何修改它以改善构造函数和 setter 的过度使用 特别是当对象具有大量属性 其中大部分属性是可选的 时 本文对此设计模式进行了简要总结
  • Tomcat 6 未从 WEB-INF/lib 加载 jar

    我正在尝试找出我的 tomcat 环境中的配置问题 我们的生产服务器正在运行 tomcat 安装并从共享 NFS 挂载读取战争 然而 当我尝试使用独立的盒子 及其配置 进行同样的战争时 我收到下面发布的错误 有趣的是 如果我将 WEB IN
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • Java 中清除嵌套 Map 的好方法

    public class MyCache AbstractMap
  • 什么是 Java2D 处理程序线程?

    我创建了一个使用 Hibernate 的示例 java 应用程序 当我进行线程转储时 我观察到一个名为 Java2D Disposer 的奇怪线程 有人能告诉我该线程的功能吗 AWT 系统中的某些实体需要最终确定以释放资源 最突出的例子是j
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat

随机推荐