private BsonValue findOrCreateJsonArray(BsonValue currentVal, String objKey, Integer aryIdx) { if (objKey != null) { BsonDocument jsonObj = currentVal.asDocument(); if (jsonObj.get(objKey) == null) { BsonValue ary = new BsonArray(); jsonObj.put(objKey, ary); return ary; } return jsonObj.get(objKey); } else { // aryIdx != null BsonArray jsonAry = currentVal.asArray(); if (jsonAry.size() <= aryIdx || jsonAry.get(aryIdx).equals(BsonNull.VALUE)) { BsonValue ary = new BsonArray(); assureJsonArraySize(jsonAry, aryIdx); jsonAry.set(aryIdx, ary); return ary; } return jsonAry.get(aryIdx); } }
private BsonValue findOrCreateJsonObject(BsonValue currentVal, String objKey, Integer aryIdx) { if (objKey != null) { BsonDocument jsonObj = currentVal.asDocument(); if (jsonObj.get(objKey) == null) { BsonValue obj = new BsonDocument(); jsonObj.put(objKey, obj); return obj; } return jsonObj.get(objKey); } else { // aryIdx != null BsonArray jsonAry = currentVal.asArray(); if (jsonAry.size() <= aryIdx || jsonAry.get(aryIdx).equals(BsonNull.VALUE)) { BsonValue obj = new BsonDocument(); assureJsonArraySize(jsonAry, aryIdx); jsonAry.set(aryIdx, obj); return obj; } return jsonAry.get(aryIdx); } }
private void setUnflattenedValue(BsonDocument flattened, String key, BsonValue currentVal, String objKey, Integer aryIdx) { BsonValue val = flattened.get(key); if (objKey != null) { if (val.isArray()) { BsonValue jsonArray = new BsonArray(); for (BsonValue arrayVal : val.asArray()) { jsonArray.asArray().add(newJsonUnflattener( arrayVal).unflatten()); } currentVal.asDocument().put(objKey, jsonArray); } else { currentVal.asDocument().put(objKey, val); } } else { // aryIdx != null assureJsonArraySize(currentVal.asArray(), aryIdx); currentVal.asArray().set(aryIdx, val); } }