字符串中的JSON / Jettison格式错误以/(斜杠)开头

时间:2013-02-20 19:18:14

标签: java json

我想要这个JSON:

{"lala":{"any":1,"/doc/h2":1}}

但是使用Jetisson(http://jettison.codehaus.org/),如下例所示:

  JSONObject extractJson = new JSONObject();
  int i = 1;

  extractJson.put("lala", new JSONObject()
      .put("any",1)
      .put("/doc/h" + (i+1), 1)  # HERE!
    );

  System.out.println(extractJson.toString());

返回:

 {"lala":{"any":1,"\/doc\/h2":1}}

在任何'/'

前加上'\'

我的问题是:为什么?我怎样才能生成正确的json?

任何想法?

2 个答案:

答案 0 :(得分:0)

默认情况下,你的图书馆(jettison)看起来很容易被削减。对于json来说这是可以的,任何解析器都应该能够在解析时再次取消它们。

显然,根据JSON: why are forward slashes escaped?,这是因为HTML,特别是脚本标签。

如果你真的不想要它们,你有几个选择:

  • 查看您的库文档,了解默认情况下如何不转义。
  • 更改库。

答案 1 :(得分:0)

如果您可以选择切换库,GSON可以轻松完成此操作:

JsonObject jsonObj = new JsonObject();
jsonObj.addProperty("field1", 5);
jsonObj.addProperty("/doc/h2", 1);
System.out.println(jsonObj.toString());