您是否可以避免Gson将“ <”和“>”转换为Unicode转义序列?


127

我注意到Gson将字符串“ <”转换为JSON输出中的Unicode转义序列。您能以某种方式避免这种情况吗,还是必须始终在JSON中转义“ <”和“>”之类的字符?

考虑下面的示例{"s":"\u003c"}:我只想 {"s":"<"}

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编写)。


2
GSON是否默认这样做?哇 尽管从JSON规范的角度来看完全合法,但这是一个很奇怪的默认设置。
StaxMan 2010年

3
是的,我也感到惊讶。幸运的是,一旦您知道要看哪里,补救措施就很容易。:)否则,经过一天的使用经验,我发现Gson是一个非常干净,漂亮的库,并且带有出色的用户指南
Jonik

6
这也发生在“ =”字符上,该字符变为“ \ u003d”。
罗素·席尔瓦

Answers:


253

您需要禁用HTML转义

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

11
我不知道为什么默认情况下它是打开的。JSON与HTML无关。该规范只是国家"和`\`需要进行转义。
Mark Jeronimus

伙计们,那对我没用。我正在使用``com.squareup.retrofit2:retrofit:2.3.0''&&``com.squareup.retrofit2:converter-gson:2.3.0''。请帮我。
代码先生
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.