Преобразовать байтовый массив в JSON, ошибка недопустима JSON - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь преобразовать byte[] в JSON, который выглядит следующим образом: {"foo": [{...}, {...}, ...], "bar": []}

try {
  byte[] response = getExternalServiceResponse();
  JSONObject json = new JSONObject(new String(response));
  log.info(json.toString(4));
} catch (Exception e) {
  e.printStackTrace();
}

Это работает для большинства случаев ответа, но есть некоторые, которые выдают исключение с org.json.JSONException: A JSONObject text must begin with '{' at 3 [character 2 line 2]. Как я могу узнать, какие символы вызывают проблему, так как я не могу прочитать байтовый массив, и я не уверен, что содержит входные данные без предварительного преобразования его в JSON, который выдает ошибку?

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Может быть, это потому, что иногда ваш сервис возвращает ошибку или что-то похожее, что не является json, например "Произошла некоторая ошибка здесь! ;-)"

Лучше войтиВаш ответ перед преобразованием его в json. Еще лучше проверить его схему json для производственного развертывания.

String strResponse = new String(response).trim();
log.info( strResponse);
1 голос
/ 05 июля 2019

Я согласен, что использовать Exception для оценки - плохая идея. Может быть, вы сами можете сказать, что это будет недействительно.

byte[] response = getExternalServiceResponse();
String resStr = new String(response).trim();
if(!resStr.startWith("{")) throw Exception("invalid json input!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...