【问题标题】:Can you avoid Gson converting "<" and ">" into unicode escape sequences?你能避免 Gson 将“<”和“>”转换为 unicode 转义序列吗?
【发布时间】: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”。

标签: java json gson


【解决方案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''。请帮帮我。
猜你喜欢
  • 1970-01-01
  • 2011-05-29
  • 2020-03-15
  • 1970-01-01
  • 2018-02-15
  • 2014-08-15
相关资源
最近更新 更多