【发布时间】:2014-10-14 07:19:42
【问题描述】:
为什么会出现这些反斜杠以及在浏览器向客户端显示 json 数据时如何删除它们?
如果那些反斜杠不存在,o/p json 响应似乎是有效的
testbookdata.xml
<Users>
<User>
<Name>Unni</Name>
<Books>
<Book>book1</Book>
<Book>book2</Book>
<Book>book3</Book>
</Books>
</User>
<User>
<Name>Ammu</Name>
<Books>
<Book>book1</Book>
<Book>book2</Book>
<Book>book4</Book>
</Books>
</User>
</Users>
这个 xml 通过 org.json 库转换为 JSONObject
org.json.JSONObject xmlJSONObj = XML.toJSONObject(booksXMLString);
最后,我有一个类可以告诉在特定用户请求中要转换为 JSON 的所有内容,
类的一个属性:
@JsonInclude(Include.NON_NULL)
@JsonProperty(value = "jsondata")
public String getJson() {
return json.toString();
}
如果我只是打印数据,
json data : ...
{"Users":{"User":[{"Name":"Unni","Books":{"Book":["book1","book2","book3"]}},{"Name":"Ammu","Books":{"Book":["book1","book2","book4"]}}]}}
最后是带有public @ResponseBody注解的webservice控制器方法
调用服务并返回具有@Json 注释的对象
问题:
结果被浏览器显示出来的时候是这样的——
"jsondata": "{\"Users\":{\"User\":[{\"Name\":\"Unni\",\"Books\":{\"Book\":[\"book1\",\"book2\",\"book3\"]}},{\"Name\":\"Ammu\",\"Books\":{\"Book\":[\"book1\",\"book2\",\"book4\"]}}]}}"
}
如何解决这个问题?
谢谢!
注意:我添加了 spring-mvc 标签,因为@ResponseBody 是 spring-web 的一部分
更新 1:
再次尝试@Jon Skeet 提到的内容,但出现错误,
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON:
No serializer found for class org.json.JSONObject and no properties discovered to create
BeanSerializer (to avoid exception, disable SerializationConfig.SerializationFeature.FAIL_ON_EMPTY_BEANS) )
(through reference chain: com.ht.Result["jsondata"]);
nested exception is com.fasterxml.jackson.databind.JsonMappingException:
No serializer found for class org.json.JSONObject and no properties discovered
to create BeanSerializer (to avoid exception, disable SerializationConfig.SerializationFeature
.FAIL_ON_EMPTY_BEANS) )
【问题讨论】:
-
您基本上是在说您想将
getJson()的结果编码为属性jsondata的值——这正是您所拥有的。只是jsondata已经是 JSON 了……也许你应该只是返回xmlJSONObj? -
谢谢,但我实际上一开始尝试过,导致错误提示无法解析 JSONObject。我用错误更新了我的帖子
标签: java json spring spring-mvc