Удалить строку юникода и пробелы из ответа json - PullRequest
0 голосов
/ 02 мая 2019

Я звоню в веб-сервис, который дает мне Json Response.Вот код

URL url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
...
//get response text
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));           
StringBuffer response = new StringBuffer();
while ((respText = br.readLine()) != null) {                
    response.append(respText);
}
br.close(); 
retValue = response.toString();

Проблема в том, что ответ похож на следующий

"{\u000d\u000a  \"groups\": [\u000d\u000a    {\u000d\u000a      \"signingGroupId\": \"323793\",\u000d\u000a      \"groupName\": \"1440 Signing Group 1\",\u000d\u000a      \"groupType\": \"sharedSigningGroup\",\u000d\u000a      \"created\": \"3\/27\/2019 6:08:34 AM\",\u000d\u000a      \"createdBy\": \"ABC Software\",\u000d\u000a      \"modified\": \"4\/1\/2019 6:40:45 AM\",\u000d\u000a      \"modifiedBy\": \"Corner O'Brien\"\u000d\u000a    },\u000d\u000a    {\u000d\u000a      \"signingGroupId\": \"323794\",\u000d\u000a      \"groupName\": \"1440 Another Group\",\u000d\u000a      \"groupType\": \"sharedSigningGroup\",\u000d\u000a      \"created\": \"3\/27\/2019 6:14:52 AM\",\u000d\u000a      \"createdBy\": \"XYZ Software\",\u000d\u000a      \"modified\": \"3\/27\/2019 6:16:37 AM\",\u000d\u000a      \"modifiedBy\": \"XYZ Software\"\u000d\u000a    }\u000d\u000a  ]\u000d\u000a}"

Я хочу сделать так, как я повторяю из приведенного выше ответа

"{"groups":[{"signingGroupId": "323793","groupName": "1440 Signing Group 1","groupType": "sharedSigningGroup","created": "3/27/2019 6:08:34 AM","createdBy": "ABC Software","modified": "4/1/2019 6:40:45 AM","modifiedBy": "John O'Brien"},{"signingGroupId": "323794","groupName": "1440 Another Group","groupType": "sharedSigningGroup","created": "3/27/2019 6:14:52 AM","createdBy": "ABC Software","modified": "3/27/2019 6:16:37 AM","modifiedBy": "ABC Software"}]}"

То есть удалить все \u000d\u000a и spaces после этого.Но не для того, чтобы удалить пробел из какого-либо свойства Json.

Я попробовал это

retValue = retValue.replace("\\u000d\\u000a", "");
retValue = retValue.replace("\\", "");

, что дает мне

"{  "groups": [    {      "signingGroupId": "323793",      "groupName": "1440 Signing Group 1",      "groupType": "sharedSigningGroup",      "created": "3/27/2019 6:08:34 AM",      "createdBy": "ABC Software",      "modified": "4/1/2019 6:40:45 AM",      "modifiedBy": "John O'Brien"    },    {      "signingGroupId": "323794",      "groupName": "1440 Another Group",      "groupType": "sharedSigningGroup",      "created": "3/27/2019 6:14:52 AM",      "createdBy": "XYZ Software",      "modified": "3/27/2019 6:16:37 AM",      "modifiedBy": "XYZ Software"    }  ]}"

Но все же есть пробелы.Теперь, если я использую

String replcaedNewLineAndSpaces = retValue.replaceAll("[ \t]+", "");

Проблема заключается в том, что эта строка также удаляет пробелы из свойств Json.

"{"groups":[{"signingGroupId":"323793","groupName":"1440SigningGroup1","groupType":"sharedSigningGroup","created":"3/27/20196:08:34AM","createdBy":"ABCSoftware","modified":"4/1/20196:40:45AM","modifiedBy":"JohnO'Brien"},{"signingGroupId":"323794","groupName":"1440AnotherGroup","groupType":"sharedSigningGroup","created":"3/27/20196:14:52AM","createdBy":"XYZSoftware","modified":"3/27/20196:16:37AM","modifiedBy":"XYZSoftware"}]}"

См. GroupName, который был "groupName": "1440 Signing Group 1".Теперь становится 1440SigningGroup1.Точно так же и для других свойств.

Есть ли в любом случае Строка Json остается такой, какая она есть, но удаляет \u000d\u000a и spaces после нее.Таким образом, окончательный ответ станет

"{"groups":[{"signingGroupId": "323793","groupName": "1440 Signing Group 1","groupType": "sharedSigningGroup","created": "3/27/2019 6:08:34 AM","createdBy": "ABC Software","modified": "4/1/2019 6:40:45 AM","modifiedBy": "John O'Brien"},{"signingGroupId": "323794","groupName": "1440 Another Group","groupType": "sharedSigningGroup","created": "3/27/2019 6:14:52 AM","createdBy": "ABC Software","modified": "3/27/2019 6:16:37 AM","modifiedBy": "ABC Software"}]}"

Спасибо

1 Ответ

0 голосов
/ 02 мая 2019

Как указано в комментариях, создание класса POJO и анализ JSON будут оптимальными и безопасными.(Я думаю, что наиболее распространенной является библиотека GSon )

Однако, если вы настаиваете на удалении пробелов, сделайте это с помощью простого регулярного выражения:

retValue.replaceAll("\\\\u000d\\\\u000a\\s*", "")

Это будетзаменить все строки, начинающиеся с \ u000d \ u000a, за которыми следуют 0 неограниченных пробелов.

...