【问题标题】:How to remove \" from an array of objects如何从对象数组中删除 \"
【发布时间】: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


【解决方案1】:

我可以使用下面的行从响应中删除 \" -

responseXML.replace("\\\"", "\"");

还可以使用下面的行从响应中删除 \n -

responseXML.replace("\\n", "");

【讨论】:

  • 不,这些行不会做任何有用的事情,因为您忽略了replace 的返回值。即使您确实使用了结果,这也是问题的错误解决方案,IMO。你有 JSON,所以将其解析为 JSON。
猜你喜欢
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 2023-03-03
  • 2017-03-10
  • 2023-01-30
  • 1970-01-01
  • 2012-05-12
相关资源
最近更新 更多