@Override public void startArray(long currLine, long currCol) { arrays.push(new JsonArray()) ; }
@Override public void element(long currLine, long currCol) { arrays.peek().add(value) ; value = null ; }
@Override public Iterator<JsonObject> execJsonItems() { // Non-streaming. // TODO Integrate with the JSON parser to stream the results. JsonArray array = execJson().getAsArray(); List<JsonObject> x = new ArrayList<>(array.size()); array.forEach(elt->{ if ( ! elt.isObject()) throw new QueryExecException("Item in an array from a JSON query isn't an object"); x.add(elt.getAsObject()); }); return x.iterator(); }
private boolean isJsonArrayCompact(JsonArray jsonArray) { if ( jsonArray.size() > maxCompactArray ) return false ; for ( JsonValue aJsonArray : jsonArray ) { if ( !aJsonArray.isPrimitive() ) { return false; } } return true ; }
public static JsonValue access(JsonValue obj, Object... path) { for ( Object p : path ) { if ( p instanceof String ) { if ( !obj.isObject() ) { throw new JsonException("Path traverses non-object") ; } obj = obj.getAsObject().get((String)p) ; } if ( p instanceof Integer ) { if ( !obj.isArray() ) { throw new JsonException("Path traverses non-array") ; } obj = obj.getAsArray().get((Integer)p) ; } } return obj ; }
private void parseConf(BackupConfig cfg, String cfgFile) { try { JsonObject obj = JSON.read(cfgFile); cfg.port = obj.get(jPort).getAsNumber().value().intValue(); JsonArray a = obj.get(jLogs).getAsArray(); a.forEach(elt-> { BackupArea area = parseLogObject(cfg, elt); cfg.logs.add(area); }); } catch (Exception ex) { throw new CmdException("Failed to process configuration file: "+ex.getMessage()); } }
private static List<Var> parseVars(JsonObject obj) { if ( !obj.get(kVars).isArray() ) throw new ResultSetException("Key 'vars' must be a JSON array"); JsonArray a = obj.get(kVars).getAsArray(); Iterator<JsonValue> iter = a.iterator(); List<Var> vars = new ArrayList<>(); for ( ; iter.hasNext() ; ) { JsonValue v = iter.next(); if ( !v.isString() ) throw new ResultSetException("Entries in vars array must be strings"); Var var = Var.alloc(v.getAsString().value()); vars.add(var); } return vars; }
obj.put("x2", JsonNumber.value(56)) ; obj.put("x2", JsonNumber.value(56)) ; JsonArray a = new JsonArray() ; a.add(JsonNumber.value(5)) ; a.add(new JsonBoolean(true)) ; a.add(new JsonBoolean(false)) ; obj.put("array", a) ; a = new JsonArray() ; a.add(JsonNumber.value(5)) ; obj.put("array2", a) ; obj.output(IndentedWriter.stdout) ;
@Override public void visit(JsonArray jsonArray) { if ( jsonArray.size() == 0 ) { out.print(ArrayStart) ; out.incIndent() ; out.print(ArrayFinish) ; out.decIndent() ; return ; } if ( isJsonArrayCompact(jsonArray) ) writeArrayCompact(jsonArray) ; else writeArrayLong(jsonArray) ; }
public static JsonValue access(JsonValue obj, Object ... path) { for ( int i = 0 ; i < path.length ; i++ ) { Object p = path[i] ; if ( p instanceof String ) { if ( ! obj.isObject() ) throw new JsonException("Path traverses non-object") ; obj = obj.getAsObject().get((String)p) ; } if ( p instanceof Integer ) { if ( ! obj.isArray() ) throw new JsonException("Path traverses non-array") ; obj = obj.getAsArray().get((Integer)p) ; } } return obj ; }
/** Create a builder from a {@link JsonValue}. * <p>If the argument is an object or array, use it to initialize the builder. * <p>If the argument is a JSON primitive (string, number, boolean or null), * <p>Otherwise thrown {@link IllegalArgumentException}. */ public static JsonBuilder createFrom(JsonValue arg) { if ( arg.isObject() ) { JsonObject obj = arg.getAsObject() ; JsonBuilder builder = JsonBuilder.create() ; builder.startObject() ; obj.forEach((k,v) -> builder.key(k).value(copy(v))) ; builder.finishObject() ; return builder ; } if ( arg.isArray() ) { JsonArray array = arg.getAsArray() ; JsonBuilder builder = JsonBuilder.create() ; builder.startArray() ; array.forEach((a)->builder.value(copy(a))) ; builder.finishArray() ; return builder ; } throw new IllegalArgumentException("Not a JSON object or JSON array; "+arg); }
private List<Var> parseVars(JsonObject obj) { if ( ! obj.get(kVars).isArray() ) throw new ResultSetException("Key 'vars' must be a JSON array") ; JsonArray a = obj.get(kVars).getAsArray() ; Iterator<JsonValue> iter = a.iterator() ; List<Var> vars = new ArrayList<Var>() ; for ( ; iter.hasNext() ; ) { JsonValue v = iter.next() ; if ( ! v.isString() ) throw new ResultSetException("Entries in vars array must be strings") ; Var var = Var.alloc(v.getAsString().value()) ; vars.add(var) ; } return vars ; }
protected RDFNode decodeList(JsonArray array) throws JsonException { if (array.size() == 0) { return RDF.nil; } else { RDFNode[] listContents = new RDFNode[ array.size() ]; for (int i = 0; i < array.size(); i++) { listContents[i] = decodeNode(array.get(i), null); } return model.createList(listContents); } }
@Override public void startArray(long currLine, long currCol) { arrays.push(new JsonArray()) ; }
@Override public void element(long currLine, long currCol) { arrays.peek().add(value) ; value = null ; }
@Override public void visit(JsonArray jsonArray) { if ( jsonArray.size() == 0 ) { out.print(ArrayStart) ; out.incIndent() ; out.print(ArrayFinish) ; out.decIndent() ; return ; } if ( isJsonArrayCompact(jsonArray) ) writeArrayCompact(jsonArray) ; else writeArrayLong(jsonArray) ; }