private void setListValue(List<Object> list, Object value) { int index = getIndex(); // Fill missing elements if needed while (list.size() <= index) { list.add(null); } if (NodeType.MAP.equals(valueType)) { @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) list.get(index); if (map == null) { map = new LinkedHashMap<>(); list.set(index, map); } setMapValue(map, value); } else if (NodeType.ARRAY.equals(valueType)) { @SuppressWarnings("unchecked") List<Object> nestedList = (List<Object>) list.get(index); if (nestedList == null) { nestedList = new ArrayList<>(); list.set(index, nestedList); } setListValue(nestedList, value); } else { list.set(index, value); } }
private void setMapValue(Map<String, Object> map, Object value) { String key = getKey(); if (NodeType.MAP.equals(valueType)) { @SuppressWarnings("unchecked") Map<String, Object> nestedMap = (Map<String, Object>) map.get(key); if (nestedMap == null) { nestedMap = new LinkedHashMap<>(); map.put(key, nestedMap); } setMapValue(nestedMap, value); } else if (NodeType.ARRAY.equals(valueType)) { @SuppressWarnings("unchecked") List<Object> list = (List<Object>) map.get(key); if (list == null) { list = new ArrayList<>(); map.put(key, list); } setListValue(list, value); } else { map.put(key, value); } }