java json 斜杠_Java JSON反斜杠已添加到JSON响应中

为什么这些反斜杠会出现,以及如何在浏览器向客户端显示json数据时将其删除?

如果这些反斜杠不存在,则o / p json响应似乎有效

testbookdata.xml

Unni

book1

book2

book3

Ammu

book1

book2

book4

该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"]}}]}}

最后,具有公共@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) )

解决方法:

据我了解,你有

class SomePojo {

public JSONObject json;

@JsonInclude(Include.NON_NULL)

@JsonProperty(value = "jsondata")

public String getJson() {

return json.toString();

}

}

@ResponseBody

@RequestMapping(..)

public SomePojo getPojo() {

SomePojo pojo = ...;

return pojo;

}

上面的模型基本上是说您有一个包含名称/值对的JSON对象.名称是jsondata,值是JSON字符串.由于您的String值包含JSON String中不可接受的字符,因此必须在序列化的值中对其进行转义.

但是您似乎想要一个JSON对象,其中包含一个名称-值对,其中名称是jsondata,而值是另一个JSON对象.

你可能想拥有

@JsonRawValue

@JsonInclude(Include.NON_NULL)

@JsonProperty(value = "jsondata")

public String getJson() {

return json.toString();

}

这样就可以按原样使用String值,而不是将其转换为JSON String.

标签:spring,json,java,spring-mvc

来源: https://codeday.me/bug/20191029/1958372.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值