From f2e07364af7f0c180ec52b96adff1cd4911b35ad Mon Sep 17 00:00:00 2001 From: Eric Laquer Date: Thu, 8 Dec 2016 12:02:58 -0500 Subject: [PATCH] Fixes cannot parse JSON error from Support Case 17586 --- .../com/marklogic/client/io/SearchHandle.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) mode change 100644 => 100755 src/main/java/com/marklogic/client/io/SearchHandle.java diff --git a/src/main/java/com/marklogic/client/io/SearchHandle.java b/src/main/java/com/marklogic/client/io/SearchHandle.java old mode 100644 new mode 100755 index bebd2f0dd..821e13f5f --- a/src/main/java/com/marklogic/client/io/SearchHandle.java +++ b/src/main/java/com/marklogic/client/io/SearchHandle.java @@ -607,12 +607,17 @@ private void populateExtractedResult(ExtractedResultImpl result, List result.setItems( populateExtractedItems(getSlice(events, extractedItemEvents)) ); // if extractSelected is "include", this is not a root document node } else if ( Format.JSON == getFormat() && "include".equals(extractSelected) ) { - XMLEvent event = events.get(startChildren); - if ( XMLStreamConstants.CHARACTERS != event.getEventType() ) { - throw new MarkLogicIOException("Cannot parse JSON for " + - getPath() + "--content should be characters"); + StringBuilder jsonBuilder = new StringBuilder(); + for(int i = startChildren; i < endChildren; i++){ + XMLEvent event = events.get(i); + if ( XMLStreamConstants.CHARACTERS != event.getEventType() ) { + throw new MarkLogicIOException("Cannot parse JSON for " + + getPath() + "--content should be characters"); + + } + jsonBuilder.append(event.asCharacters().getData()); } - String json = event.asCharacters().getData(); + String json = jsonBuilder.toString(); try { JsonNode jsonArray = new ObjectMapper().readTree(json); List items = new ArrayList<>(jsonArray.size());