Sha256: 2aad790ca405a973799aba65de729972d07232f9850615eb9907afd12876613d
Contents?: true
Size: 1.59 KB
Versions: 1
Compression:
Stored size: 1.59 KB
Contents
package org.embulk.input.singer_tap; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import org.embulk.spi.type.Type; import org.embulk.spi.type.Types; import org.msgpack.value.Value; import org.msgpack.value.ValueFactory; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class ObjectParser implements RecordParser { private Map<String, RecordParser> fieldParser; public ObjectParser(ObjectNode node) throws Exception { fieldParser = new LinkedHashMap<>(); for (Iterator<Map.Entry<String, JsonNode>> it = node.fields(); it.hasNext(); ) { Map.Entry<String, JsonNode> e = it.next(); fieldParser.put(e.getKey(), ParserGenerator.generateParser(e.getValue())); } } @Override public Value parse(JsonNode node) { ObjectNode objNode = (ObjectNode) node; Map<Value, Value> map = new HashMap<>(); for (Map.Entry<String, RecordParser> entry : fieldParser.entrySet()) { String key = entry.getKey(); JsonNode valNode = objNode.get(key); Value val; if (valNode == null) { val = ValueFactory.newNil(); } else { val = fieldParser.get(key).parse(valNode); } map.put(ValueFactory.newString(key), val); } return ValueFactory.newMap(map); } public Map<String, RecordParser> properties() { return fieldParser; } public Type embulkType() { return Types.JSON; } }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
embulk-input-singer_tap-0.1.0 | src/main/java/org/embulk/input/singer_tap/ObjectParser.java |