public static JsonBuilder create(){ return new JsonBuilder(); }
public JsonObject build(){ List<KV> flat = flat(); check(flat); Map<String, Object> map = new HashMap<>(); flat.forEach(kv -> { String key = kv.key; Object value = kv.value; parseKeyValue(new KeyParser(key),value,map); }); return JsonObject.of(map); }
/** * Returns the {@link JsonBuilder} for build a json */ public static JsonBuilder builder(){ return JsonBuilder.create(); } /**
Optional<Integer> optional = parseArrayIndex(key); if(optional.isPresent()){ key = key.replaceAll(pattern.pattern(),""); ensureListNotNullAndSize(key,map,optional.get()).set(optional.get(),value); }else { map.put(key,value); Optional<Integer> optional = parseArrayIndex(key); if(optional.isPresent()){ key = key.replaceAll(pattern.pattern(),""); List<Object> list = ensureListNotNullAndSize(key,map,optional.get()); if(list.get(optional.get()) == null){ list.set(optional.get(),new HashMap<String, Object>()); parseKeyValue(parser,value,m); }else { if(null == map.get(key)){ parseKeyValue(parser,value,m);
private List<KV> flat(){ List<KV> flat = new ArrayList<>(); list.forEach(kv -> { String key = kv.key; Object value = kv.value; if(value == null || Beans.isSimpleProperty(value.getClass())){ flat.add(new KV(key,value)); }else { JsonObject json = JsonObject.of(JSON.decodeMap(JSON.encode(value))); addFlatList(key,json,flat); } }); return flat; }
private void addFlatList(String key, JsonObject json, List<KV> flat){ json.forEachProperty((s,o) ->{ if(null == o){ flat.add(new KV(key+"."+s,null)); return; } if(Beans.isSimpleProperty(o.getClass())){ flat.add(new KV(key+"."+s,o)); return; } if(o.getClass().isArray()){ Object[] arrays = (Object[])o; for (int i = 0; i < arrays.length; i ++){ addFlatList(key+"." + s + "["+i+"]",json.getObject(s),flat); } return; } if(o instanceof List){ List arrays = (List) o; for (int i = 0; i < arrays.size(); i ++){ addFlatList(key+"." + s + "["+i+"]",json.getObject(s),flat); } return; } addFlatList(key+"."+s,json.getObject(s),flat); }); } }