@Deprecated public static boolean isComplexKey(Object ref) throws JSONException { if (ref == null || !(ref instanceof String)) return false; final String key = (String) ref; return (key.indexOf(KEY_DELIM) != -1 || isBracketedKey(key) || isObjectIndexKey(key)); }
@Deprecated private static boolean isObjectIndexKey(String key) { if (key == null) return false; final int delimIndex = key.indexOf(INDEX_DELIM); // One and only one colon followed by a valid index if (-1 < delimIndex && delimIndex == key.lastIndexOf(INDEX_DELIM)) { // For key "obj[0]:4", "obj[0]" is outer, "4" is inner final String innerKey = key.substring(delimIndex + 1); return !isBracketedKey(innerKey) && isValidIndex(innerKey); } return false; }
@Deprecated private static Object derefBracketedKey(Object object, String key) throws JSONException { final Object jsonObject = tryParseJson(object, true); if (jsonObject == null || key == null) return null; if (key.indexOf(KEY_DELIM) != -1) return derefComplexKey(jsonObject, key); if (!isBracketedKey(key)) return getElement(jsonObject, key); /* * Dereference key or index from array or object -- null if non-existent */ // For key "arr[0][1]": outer is "arr", inner is "0", next is "[1]" final int keyDelim = key.indexOf(ARR_OPEN); final int keyLength = key.indexOf(ARR_CLOSE) + 1; final String outerKey = key.substring(0, keyDelim); final String innerKey = key.substring(keyDelim + 1, keyLength - 1); if (isBracketedKey(innerKey)) throw new JSONException("Invalid inner key: " + key); final String nextKey = (keyLength < key.length()) ? key.substring(keyLength) : ""; if (nextKey.length() > 0 && nextKey.charAt(0) != ARR_OPEN) throw new JSONException("Invalid next key: " + key); final Object nextObject = (outerKey.isEmpty()) ? getElement(jsonObject, innerKey) : derefCompositeKey(getElement(jsonObject, outerKey), innerKey); return (nextKey.isEmpty()) ? nextObject : derefCompositeKey(nextObject, nextKey); }
deref = object; else deref = (isBracketedKey(outerKey)) ? derefBracketedKey(object, outerKey) : getElement(object, outerKey);
else if (isBracketedKey(key)) return derefBracketedKey(object, key); else if (isBracketedKey(key)) return derefBracketedKey(object, key);