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());