你能避免 Gson 将“<”和“>”转换为 unicode 转义序列吗?

Posted

技术标签:

【中文标题】你能避免 Gson 将“<”和“>”转换为 unicode 转义序列吗?【英文标题】:Can you avoid Gson converting "<" and ">" into unicode escape sequences? 【发布时间】:2011-05-08 00:22:49 【问题描述】:

我注意到Gson 将字符串“”这样的字符总是必须在 JSON 中转义吗?

考虑这个打印"s":"\u003c"的例子;我只想"s":"&lt;"

public static void main(String[] args) 
    Gson gson = new GsonBuilder().create();
    System.out.println(gson.toJson(new Foo()));  


static class Foo 
    String s = "<";

上下文:我正在创建的 JSON 片段与 html 页面甚至 javascript 无关;它只是用于将某些结构化信息传递给另一个软件(嵌入在设备中,用 C 编写)。

【问题讨论】:

GSON 是否默认这样做?哇。这是一个相当奇怪的默认设置,尽管从 JSON 规范的角度来看这是完全合法的事情。 是的,我也很惊讶。幸运的是,remedy 很容易一旦你知道去哪里找。 :) 否则,经过一天的体验,我发现 Gson 是一个非常干净、漂亮的库,还有一个很棒的 user guide! 这也发生在“=”字符上,变成了“\u003d”。 【参考方案1】:

你需要disable HTML escaping。

Gson gson = new GsonBuilder().disableHtmlEscaping().create();

【讨论】:

我想知道为什么它默认开启。 JSON 与 HTML 无关。 spec 仅声明 " 和 `\` 需要转义。 伙计们,这对我不起作用。我正在使用 ''com.squareup.retrofit2:retrofit:2.3.0'' && ''com.squareup.retrofit2:converter-gson:2.3.0''。请帮帮我。

以上是关于你能避免 Gson 将“<”和“>”转换为 unicode 转义序列吗?的主要内容,如果未能解决你的问题,请参考以下文章

String转Map

gson的特殊用法

json字符串转map

Android ---------List 数组转成 json格式的字符串

解决GSON转Long型变为科学计数法或整形变double的问题(自动转换成Double类型

jackson实体转json时 为NULL不参加序列化的汇总