diff --git a/src/main/java/org/xbib/marc/json/JsonBuilder.java b/src/main/java/org/xbib/marc/json/JsonBuilder.java index 9eb95a1..23746f3 100644 --- a/src/main/java/org/xbib/marc/json/JsonBuilder.java +++ b/src/main/java/org/xbib/marc/json/JsonBuilder.java @@ -156,6 +156,10 @@ public class JsonBuilder { return appendable.toString(); } + void patchOpenMapState() { + state.first = false; + } + private void beginKey(String k) throws IOException { if (state.first) { state.first = false; diff --git a/src/main/java/org/xbib/marc/json/MarcJsonWriter.java b/src/main/java/org/xbib/marc/json/MarcJsonWriter.java index 1b7cc9e..fad895a 100644 --- a/src/main/java/org/xbib/marc/json/MarcJsonWriter.java +++ b/src/main/java/org/xbib/marc/json/MarcJsonWriter.java @@ -312,6 +312,8 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo /** * Write MARC record using fields, indicators, and subfield structures, * therefore allowing duplicate keys in the output. + * Duplicate keys are rejected by Elasticsearch. + * * @param marcRecord the MARC record * @throws IOException if writing fails */ @@ -371,6 +373,8 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo /** * Write MARC record from underlying map as key-oriented JSON. Use repeat maps to create lists. + * Because no duplicate keyes are generated, this is the variant for Elasticsearch. + * * @param marcRecord the MARC record * @throws IOException if writing fails */ @@ -521,6 +525,8 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo } if (!style.contains(Style.EMBEDDED_RECORD)) { sb.append('}'); + } else { + jsonBuilder.patchOpenMapState(); } writer.write(sb.toString()); }