【发布时间】:2017-06-15 23:56:09
【问题描述】:
我正在尝试使用 JSON 从服务器获取对象数组。
服务器向我发送以下字符串。
"document" : "{\"bc\": {\n \"b\": {\n \"t\": 1,\n \"r\": 1,\n \"c\": \"none\",\n \"ipad\": \"Y\",\n \"n\": \"Table of Contents\",\n \"o\": 1,\n \"l\": \"en_US\",\n \"i\": 1000013253\n },\n \"i\": \"CM19014269\"\n}}"
此响应包含一个 \" 而不是每个 "。我不需要任何 \"。我想要的只是一个简单的 JSON 响应。非常感谢任何帮助。
我的代码:-
for (ManageBasketTO manageBasketTO: retList) {
Long basketId = manageBasketTO.getBasketID();
BasketTO basketTo = null;
basketTo = CommonUtil.getBasket(usrCtxtObj, basketId, language, EBookConstants.FOR_VIEWER_INTERFACE,
usrCtxtObj.getScenarioID(), EBookConstants.YES, request, deviceType);
String doc = Utilities.getStringFromDocument(basketTo.getdocument());
doc = doc.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "");
doc = doc.replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>", "");
doc = doc.trim();
JSONObject object = XML.toJSONObject(doc);
doc = object.toString(4);
BasketsInfoTO basketsInfoTO = new BasketsInfoTO(doc);
basketsToc.add(basketsInfoTO);
}
basketInfoRestTO.setBasketsInfoTOList(basketsToc);
ObjectMapper mapper = new ObjectMapper();
responseXML = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(basketInfoRestTO);
}
另外,我尝试在行 - basketsToc.add(basketsInfoTO); 之后打印 basketsInfoTO.getDocument 的值并得到正确的响应。
但是,当我尝试在行 - basketInfoRestTO.setBasketsInfoTOList(basketsToc); 之后打印 - basketInfoRestTO.getBasketsInfoTOList 的值时,我遇到了这个 \" 字符问题。
【问题讨论】:
-
你是在客户端还是服务器端解决这个问题?
-
您已获得一个 JSON 对象 - 将其解析为 JSON 对象,然后获取
document字段。不要乱用字符串替换 - 您手动删除 XML 声明以开始......
标签: java json string replace escaping