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 84ef9fb0a..d13253e5b --- a/src/main/java/com/marklogic/client/io/SearchHandle.java +++ b/src/main/java/com/marklogic/client/io/SearchHandle.java @@ -600,12 +600,16 @@ 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); ArrayList items = new ArrayList(jsonArray.size());