diff --git a/src/main/java/org/embulk/parser/jsonpath/JsonpathParserPlugin.java b/src/main/java/org/embulk/parser/jsonpath/JsonpathParserPlugin.java index 80abc03..c64eb67 100644 --- a/src/main/java/org/embulk/parser/jsonpath/JsonpathParserPlugin.java +++ b/src/main/java/org/embulk/parser/jsonpath/JsonpathParserPlugin.java @@ -181,11 +181,10 @@ public int read() skipOrThrow(new DataException(e), stopOnInvalidRecord); continue; } - Map additionalValues = createAdditionalColumns(jsonPathMap, rootNode); if (json.isArray()) { for (JsonNode recordValue : json) { try { - createRecordFromJson(recordValue, schema, jsonPathMap, visitor, pageBuilder, additionalValues); + createRecordFromJson(rootNode, recordValue, schema, jsonPathMap, visitor, pageBuilder); } catch (DataException e) { skipOrThrow(e, stopOnInvalidRecord); @@ -195,7 +194,7 @@ public int read() } else { try { - createRecordFromJson(json, schema, jsonPathMap, visitor, pageBuilder, additionalValues); + createRecordFromJson(rootNode, json, schema, jsonPathMap, visitor, pageBuilder); } catch (DataException e) { skipOrThrow(e, stopOnInvalidRecord); @@ -209,23 +208,6 @@ public int read() } } - private Map createAdditionalColumns(Map jsonPathMap, JsonNode rootNode) - { - Map additionalColumns = new HashMap<>(); - jsonPathMap.forEach((column, path) -> { - if (path.startsWith("$")) { - try { - additionalColumns.put( - column, - JsonPath.using(JSON_PATH_CONFIG).parse(rootNode).read(path, JsonNode.class) - ); - } catch (PathNotFoundException e) { - logger.warn("Failed to get %s", path); - } - } - }); - return Collections.unmodifiableMap(additionalColumns); - } private Map createJsonPathMap(PluginTask task, Schema schema) { Map columnMap = new HashMap<>(); @@ -239,7 +221,7 @@ private Map createJsonPathMap(PluginTask task, Schema schema) return Collections.unmodifiableMap(columnMap); } - private void createRecordFromJson(JsonNode json, Schema schema, Map jsonPathMap, ColumnVisitorImpl visitor, PageBuilder pageBuilder, Map additionalValues) + private void createRecordFromJson(JsonNode root, JsonNode json, Schema schema, Map jsonPathMap, ColumnVisitorImpl visitor, PageBuilder pageBuilder) { if (json.getNodeType() != JsonNodeType.OBJECT) { throw new JsonRecordValidateException(format(Locale.ENGLISH, @@ -248,9 +230,10 @@ private void createRecordFromJson(JsonNode json, Schema schema, Map { - visitor.setValue(v); - k.visit(visitor); - } - ); - pageBuilder.addRecord(); }