public static JsonArray getArray(JsonObject jo, String k) { JsonValue jv = jo.get(k); return jv == null ? null : jv.getAsArray(); }
public static JsonArray stringToJsonArray(String s) { JSONMaker jm = new JSONMaker(); JSONParser.parseAny(new StringReader(s), jm); return jm.jsonValue().getAsArray(); }
@Override public List<DataSourceDescription> listDescriptions() { JsonObject obj = rpc(DeltaConst.OP_LIST_DSD, emptyObject); JsonArray array = obj.get(DeltaConst.F_ARRAY).getAsArray(); List<DataSourceDescription> x = array.stream() .map(jv->getDataSourceDescription(jv.getAsObject())) .collect(Collectors.toList()) ; return x ; }
@Override public List<PatchLogInfo> listPatchLogInfo() { JsonObject obj = rpc(DeltaConst.OP_LIST_LOG_INFO, emptyObject); JsonArray array = obj.get(DeltaConst.F_ARRAY).getAsArray(); List<PatchLogInfo> x = array.stream() .map(jv->PatchLogInfo.fromJson(jv.getAsObject())) .collect(Collectors.toList()) ; return x ; }
@Override public List<Id> listDatasets() { JsonObject obj = rpc(DeltaConst.OP_LIST_DS, emptyObject); JsonArray array = obj.get(DeltaConst.F_ARRAY).getAsArray(); List<Id> x = array.stream() .map(jv->Id.fromString(jv.getAsString().value())) .collect(Collectors.toList()) ; return x ; }
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; }
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 ; }
private static boolean isCompactValue(JsonValue v) { if ( v.isPrimitive()) return true ; if ( v.isArray() ) { JsonArray a = v.getAsArray() ; if ( a.size() == 0 ) return true ; if ( a.size() > 1 ) return false ; return a.get(0).isPrimitive() ; } if ( v.isObject() ) { JsonObject obj = v.getAsObject() ; Set<String> x = obj.keySet() ; if ( x.size() == 0 ) return true ; if ( x.size() > 1 ) return false ; String k = obj.keys().iterator().next(); return obj.get(k).isPrimitive() ; } return false ; }
private static boolean isCompactValue(JsonValue v) { if ( v.isPrimitive()) return true ; if ( v.isArray() ) { JsonArray a = v.getAsArray() ; if ( a.size() == 0 ) return true ; if ( a.size() > 1 ) return false ; return a.get(0).isPrimitive() ; } if ( v.isObject() ) { JsonObject obj = v.getAsObject() ; Set<String> x = obj.keySet() ; if ( x.size() == 0 ) return true ; if ( x.size() > 1 ) return false ; String k = obj.keys().iterator().next(); return obj.get(k).isPrimitive() ; } return false ; }
private static String[] getStringArray(JsonObject json, String key) { if ( ! json.hasKey(key) ) throw new TDBException("StoreParamsCodec.getStringArray: no such key: "+key) ; JsonArray a = json.get(key).getAsArray() ; String[] x = new String[a.size()] ; for ( int i = 0 ; i < a.size() ; i++ ) { x[i] = a.get(i).getAsString().value() ; } return x ; }
private static String[] getStringArray(JsonObject json, String key) { if ( ! json.hasKey(key) ) throw new TDBException("StoreParamsCodec.getStringArray: no such key: "+key) ; JsonArray a = json.get(key).getAsArray() ; String[] x = new String[a.size()] ; for ( int i = 0 ; i < a.size() ; i++ ) { x[i] = a.get(i).getAsString().value() ; } return x ; }
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 ; }
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 ; }
@Override public JsonArray execJson() { checkNotClosed(); HttpQuery httpQuery = makeHttpQuery(); httpQuery.setAccept(WebContent.contentTypeJSON); JsonArray result = new JsonArray(); try(InputStream in = httpQuery.exec()) { JsonValue v = JSON.parseAny(in); if ( ! v.isArray() ) throw new QueryExecException("Return from a JSON query isn't an array"); result = v.getAsArray(); } catch (IOException e) { IO.exception(e); } finally { this.close(); } return result; }
@Test public void testISOFormattedDateTimeLiterals() throws IOException { String srcTTL = ":r :p '1999-05-31T02:09:32'^^xsd:dateTime. :r :o '2015-07-27'^^xsd:date."; Context context = new Context(); Encoder enc = Encoder.get(context, true); String [] roots = new String[]{":r"}; String expectedEncoding = "[{'_about':'http://www.epimorphics.com/tools/example#r','p':'1999-05-31T02:09:32','o':'2015-07-27'}]"; Model src = modelFromTurtle(srcTTL); List<Resource> roots1 = modelRoots(roots, src); StringWriter writer = new StringWriter(); enc.encode(src, roots1, writer, true); String encoding = writer.toString(); JsonArray actual = parseJSON(encoding).get(EncoderDefault.PNContent).getAsArray(); JsonArray expected = ParseWrapper.stringToJsonArray(expectedEncoding); assertEquals(expected, actual); }
/** 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); }
/** 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 builder(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); }
/** Test that a datetime with no timezone IN THE LEXICAL FORM renders without a timezone in the JSON. (This test pre-dates getting the timezone right for the round-trip test above.) */ @Test public void testZonelessDateLiterals() throws IOException { String srcTTL = ":r :p '1999-05-31T02:09:32'^^xsd:dateTime."; Context context = new Context(); Encoder enc = Encoder.get(context); String [] roots = new String[]{":r"}; String expectedEncoding = "[{'_about':'http://www.epimorphics.com/tools/example#r','p':'Mon, 31 May 1999 02:09:32'}]"; Model src = modelFromTurtle(srcTTL); List<Resource> roots1 = modelRoots(roots, src); StringWriter writer = new StringWriter(); enc.encode(src, roots1, writer, false); String encoding = writer.toString(); JsonArray actual = parseJSON(encoding).get(EncoderDefault.PNContent).getAsArray(); JsonArray expected = ParseWrapper.stringToJsonArray(expectedEncoding); assertEquals(expected, actual); }
public static String testEncoding(String srcTTL, Encoder enc, Context context, String expectedTTL, String[] roots, String expectedEncoding) throws IOException { try { Model src = modelFromTurtle(srcTTL); Model expectedM = modelFromTurtle(expectedTTL); String encoding = roundTripTester(src, enc, context, expectedM, modelRoots(roots, src)); JsonArray actual = parseJSON(encoding).get(EncoderDefault.PNContent).getAsArray(); if (expectedEncoding == null) { System.out.println(actual); } else { JsonArray expected = ParseWrapper.stringToJsonArray(expectedEncoding); assertEquals(expected, actual); } return encoding; } catch (JsonException e) { throw new EncodingException(e.getMessage(), e); } }