0

我想要这个 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?

任何想法?

4

2 回答 2

0

如果您可以选择切换库,GSON可以轻松做到这一点:

JsonObject jsonObj = new JsonObject();
jsonObj.addProperty("field1", 5);
jsonObj.addProperty("/doc/h2", 1);
System.out.println(jsonObj.toString());
于 2013-02-20T19:48:31.023 回答
0

默认情况下,您的库(jettison)似乎会转义。这对于 json 来说是可以的,任何解析器都应该能够在解析时再次取消转义它们。

显然,根据JSON:为什么要转义正斜杠?这是因为 HTML,特别是脚本标签。

如果你真的不希望他们在那里,你有几个选择:

  • 查看您的库文档,了解默认情况下如何不转义。
  • 改变图书馆。
于 2013-02-20T19:26:57.103 回答