Я пытаюсь проанализировать клиентские объекты, возвращенные после вызова API, используя Apache Olingo V4.Я вижу ошибку ниже, когда строка значения содержит "{" или "}", даже если возвращаемые данные представлены в формате JSON, а квадратные скобки заключены в кавычки.
Ошибка:
[main]: 2019-03-13 13: 52: 21,719 ERROR JOID [] JNAME [] [ClientEntitySetIterator] - Ошибка при получении сущностей из EntitySet org.apache.olingo.client.api.serialization.ODataDeserializerException: com.fasterxml.jackson.core.JsonParseException: неожиданный конец ввода в VALUE_STRING
код
URIBuilder uriBuilder = client.newURIBuilder(url).appendEntitySetSegment("Orders");
uriBuilder.addCustomQueryOption("$filter", filter.toString());
uriBuilder.addCustomQueryOption("exported", "false");
uriBuilder.addCustomQueryOption("$count", "true");
URI absoluteUri = uriBuilder.build();
ODataEntitySetIteratorRequest<ClientEntitySet, ClientEntity> request =
client.getRetrieveRequestFactory().getEntitySetIteratorRequest(absoluteUri);
request.addCustomHeader(HttpHeader.AUTHORIZATION, "Bearer "+token);
request.addCustomHeader("exported", "false");
request.setFormat(ContentType.APPLICATION_JSON);
request.setAccept("application/json;odata.metadata=minimal");
ODataRetrieveResponse<ClientEntitySetIterator<ClientEntitySet, ClientEntity>> response = request.execute();
int res = response.getStatusCode();
String message = response.getStatusMessage();
ClientEntitySetIterator<ClientEntitySet, ClientEntity> iterator = response.getBody();
while(iterator.hasNext()) {
ClientEntity ce = iterator.next();
ClientEntityImpl impl = (ClientEntityImpl) ce;
String shippingStatus = impl.getProperty(SHIPPINGSTATUS).getValue().toString();
String checkoutStatus = impl.getProperty(CHECKOUTSTATUS).getValue().toString();
String paymentStatus = impl.getProperty(PAYMENTSTATUS).getValue().toString();
}
ЕслиВозвращаемый порядок содержит «{» или «}» в операторе значения, ошибка генерируется в позиции iterator.hasNext () в начале цикла while.Если это происходит, любые оставшиеся объекты не обрабатываются, даже если они не содержат скобок в операторах значения.Есть ли способ обработать эту сущность, не используя итератор ODataRetrieveResponse, или пропустить эту сущность и обработать все оставшиеся сущности?