package twitter4j.internal.org.json;
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeSet;
public class JSONObject
{
public static final Object NULL = new Null(null);
private Map map = new HashMap();
public JSONObject() {}
public JSONObject(Object paramObject)
{
this();
populateMap(paramObject);
}
public JSONObject(Object paramObject, String[] paramArrayOfString)
{
this();
Class localClass = paramObject.getClass();
int i = 0;
for (;;)
{
String str;
if (i < paramArrayOfString.length) {
str = paramArrayOfString[i];
}
try
{
putOpt(str, localClass.getField(str).get(paramObject));
label42:
i++;
continue;
return;
}
catch (Exception localException)
{
break label42;
}
}
}
public JSONObject(String paramString)
throws JSONException
{
this(new JSONTokener(paramString));
}
public JSONObject(String paramString, Locale paramLocale)
throws JSONException
{
this();
ResourceBundle localResourceBundle = ResourceBundle.getBundle(paramString, paramLocale, Thread.currentThread().getContextClassLoader());
Enumeration localEnumeration = localResourceBundle.getKeys();
while (localEnumeration.hasMoreElements())
{
Object localObject1 = localEnumeration.nextElement();
if ((localObject1 instanceof String))
{
String[] arrayOfString = ((String)localObject1).split("\\.");
int i = -1 + arrayOfString.length;
Object localObject2 = this;
int j = 0;
if (j < i)
{
String str = arrayOfString[j];
Object localObject3 = ((JSONObject)localObject2).opt(str);
if ((localObject3 instanceof JSONObject)) {}
for (JSONObject localJSONObject = (JSONObject)localObject3;; localJSONObject = null)
{
if (localJSONObject == null)
{
localJSONObject = new JSONObject();
((JSONObject)localObject2).put(str, localJSONObject);
}
localObject2 = localJSONObject;
j++;
break;
}
}
((JSONObject)localObject2).put(arrayOfString[i], localResourceBundle.getString((String)localObject1));
}
}
}
public JSONObject(Map paramMap)
{
if (paramMap != null)
{
Iterator localIterator = paramMap.entrySet().iterator();
while (localIterator.hasNext())
{
Map.Entry localEntry = (Map.Entry)localIterator.next();
Object localObject = localEntry.getValue();
if (localObject != null) {
this.map.put(localEntry.getKey(), wrap(localObject));
}
}
}
}
public JSONObject(JSONObject paramJSONObject, String[] paramArrayOfString)
{
this();
int i = 0;
for (;;)
{
if (i < paramArrayOfString.length) {}
try
{
putOnce(paramArrayOfString[i], paramJSONObject.opt(paramArrayOfString[i]));
label27:
i++;
continue;
return;
}
catch (Exception localException)
{
break label27;
}
}
}
public JSONObject(JSONTokener paramJSONTokener)
throws JSONException
{
this();
if (paramJSONTokener.nextClean() != '{') {
throw paramJSONTokener.syntaxError("A JSONObject text must begin with '{' found:" + paramJSONTokener.nextClean());
}
do
{
paramJSONTokener.back();
String str;
int i;
switch (paramJSONTokener.nextClean())
{
default:
paramJSONTokener.back();
str = paramJSONTokener.nextValue().toString();
i = paramJSONTokener.nextClean();
if (i == 61) {
if (paramJSONTokener.next() != '>') {
paramJSONTokener.back();
}
}
case '\000':
while (i == 58)
{
putOnce(str, paramJSONTokener.nextValue());
switch (paramJSONTokener.nextClean())
{
default:
throw paramJSONTokener.syntaxError("Expected a ',' or '}'");
throw paramJSONTokener.syntaxError("A JSONObject text must end with '}'");
}
}
throw paramJSONTokener.syntaxError("Expected a ':' after a key");
}
} while (paramJSONTokener.nextClean() != '}');
}
public static String numberToString(Number paramNumber)
throws JSONException
{
if (paramNumber == null) {
throw new JSONException("Null pointer");
}
testValidity(paramNumber);
String str = paramNumber.toString();
if ((str.indexOf('.') > 0) && (str.indexOf('e') < 0) && (str.indexOf('E') < 0))
{
while (str.endsWith("0")) {
str = str.substring(0, -1 + str.length());
}
if (str.endsWith(".")) {
str = str.substring(0, -1 + str.length());
}
}
return str;
}
private void populateMap(Object paramObject)
{
int i = 0;
Class localClass = paramObject.getClass();
if (localClass.getClassLoader() != null) {
i = 1;
}
Method[] arrayOfMethod;
if (i != 0) {
arrayOfMethod = localClass.getMethods();
}
for (;;)
{
int j = 0;
label29:
if (j < arrayOfMethod.length) {}
try
{
Method localMethod = arrayOfMethod[j];
String str1;
if (Modifier.isPublic(localMethod.getModifiers()))
{
str1 = localMethod.getName();
localObject1 = "";
if (!str1.startsWith("get")) {
break label205;
}
if (str1.equals("getClass")) {
break label286;
}
if (!str1.equals("getDeclaringClass")) {
break label194;
}
break label286;
label100:
if ((((String)localObject1).length() > 0) && (Character.isUpperCase(((String)localObject1).charAt(0))) && (localMethod.getParameterTypes().length == 0))
{
if (((String)localObject1).length() != 1) {
break label227;
}
localObject1 = ((String)localObject1).toLowerCase();
}
}
for (;;)
{
Object localObject2 = localMethod.invoke(paramObject, (Object[])null);
if (localObject2 != null) {
this.map.put(localObject1, wrap(localObject2));
}
j++;
break label29;
arrayOfMethod = localClass.getDeclaredMethods();
break;
label194:
localObject1 = str1.substring(3);
break label100;
label205:
if (!str1.startsWith("is")) {
break label100;
}
localObject1 = str1.substring(2);
break label100;
label227:
if (!Character.isUpperCase(((String)localObject1).charAt(1)))
{
String str2 = ((String)localObject1).substring(0, 1).toLowerCase() + ((String)localObject1).substring(1);
localObject1 = str2;
}
}
return;
}
catch (Exception localException)
{
for (;;)
{
continue;
label286:
Object localObject1 = "";
}
}
}
}
public static String quote(String paramString)
{
if ((paramString == null) || (paramString.length() == 0)) {}
StringBuilder localStringBuilder;
for (String str1 = "\"\"";; str1 = localStringBuilder.toString())
{
return str1;
int i = 0;
int j = paramString.length();
localStringBuilder = new StringBuilder(j + 4);
localStringBuilder.append('"');
int k = 0;
if (k < j)
{
int m = i;
i = paramString.charAt(k);
switch (i)
{
default:
if ((i < 32) || ((i >= 128) && (i < 160)) || ((i >= 8192) && (i < 8448)))
{
String str2 = "000" + Integer.toHexString(i);
localStringBuilder.append("\\u").append(str2.substring(-4 + str2.length()));
}
break;
}
for (;;)
{
k++;
break;
localStringBuilder.append('\\');
localStringBuilder.append(i);
continue;
if (m == 60) {
localStringBuilder.append('\\');
}
localStringBuilder.append(i);
continue;
localStringBuilder.append("\\b");
continue;
localStringBuilder.append("\\t");
continue;
localStringBuilder.append("\\n");
continue;
localStringBuilder.append("\\f");
continue;
localStringBuilder.append("\\r");
continue;
localStringBuilder.append(i);
}
}
localStringBuilder.append('"');
}
}
public static Object stringToValue(String paramString)
{
if (paramString.equals("")) {}
for (;;)
{
return paramString;
if (paramString.equalsIgnoreCase("true"))
{
paramString = Boolean.TRUE;
}
else if (paramString.equalsIgnoreCase("false"))
{
paramString = Boolean.FALSE;
}
else if (paramString.equalsIgnoreCase("null"))
{
paramString = NULL;
}
else
{
int i = paramString.charAt(0);
if (((i >= 48) && (i <= 57)) || (i == 46) || (i == 45) || (i == 43)) {
if ((i == 48) && (paramString.length() > 2) && ((paramString.charAt(1) == 'x') || (paramString.charAt(1) == 'X'))) {
try
{
Integer localInteger2 = Integer.valueOf(Integer.parseInt(paramString.substring(2), 16));
paramString = localInteger2;
}
catch (Exception localException2) {}
} else {
try
{
if ((paramString.indexOf('.') > -1) || (paramString.indexOf('e') > -1) || (paramString.indexOf('E') > -1))
{
paramString = Double.valueOf(paramString);
}
else
{
Long localLong = new Long(paramString);
if (localLong.longValue() == localLong.intValue())
{
Integer localInteger1 = Integer.valueOf(localLong.intValue());
paramString = localInteger1;
}
else
{
paramString = localLong;
}
}
}
catch (Exception localException1) {}
}
}
}
}
}
public static void testValidity(Object paramObject)
throws JSONException
{
if (paramObject != null) {
if ((paramObject instanceof Double))
{
if ((((Double)paramObject).isInfinite()) || (((Double)paramObject).isNaN())) {
throw new JSONException("JSON does not allow non-finite numbers.");
}
}
else if (((paramObject instanceof Float)) && ((((Float)paramObject).isInfinite()) || (((Float)paramObject).isNaN()))) {
throw new JSONException("JSON does not allow non-finite numbers.");
}
}
}
public static String valueToString(Object paramObject)
throws JSONException
{
String str;
if ((paramObject == null) || (paramObject.equals(null))) {
str = "null";
}
for (;;)
{
return str;
if ((paramObject instanceof Number)) {
str = numberToString((Number)paramObject);
} else if (((paramObject instanceof Boolean)) || ((paramObject instanceof JSONObject)) || ((paramObject instanceof JSONArray))) {
str = paramObject.toString();
} else if ((paramObject instanceof Map)) {
str = new JSONObject((Map)paramObject).toString();
} else if ((paramObject instanceof Collection)) {
str = new JSONArray((Collection)paramObject).toString();
} else if (paramObject.getClass().isArray()) {
str = new JSONArray(paramObject).toString();
} else {
str = quote(paramObject.toString());
}
}
}
static String valueToString(Object paramObject, int paramInt1, int paramInt2)
throws JSONException
{
String str;
if ((paramObject == null) || (paramObject.equals(null))) {
str = "null";
}
for (;;)
{
return str;
if ((paramObject instanceof Number)) {
str = numberToString((Number)paramObject);
} else if ((paramObject instanceof Boolean)) {
str = paramObject.toString();
} else if ((paramObject instanceof JSONObject)) {
str = ((JSONObject)paramObject).toString(paramInt1, paramInt2);
} else if ((paramObject instanceof JSONArray)) {
str = ((JSONArray)paramObject).toString(paramInt1, paramInt2);
} else if ((paramObject instanceof Map)) {
str = new JSONObject((Map)paramObject).toString(paramInt1, paramInt2);
} else if ((paramObject instanceof Collection)) {
str = new JSONArray((Collection)paramObject).toString(paramInt1, paramInt2);
} else if (paramObject.getClass().isArray()) {
str = new JSONArray(paramObject).toString(paramInt1, paramInt2);
} else {
str = quote(paramObject.toString());
}
}
}
public static Object wrap(Object paramObject)
{
if (paramObject == null) {}
try
{
paramObject = NULL;
}
catch (Exception localException)
{
Package localPackage;
paramObject = null;
}
if ((!(paramObject instanceof JSONObject)) && (!(paramObject instanceof JSONArray)) && (!NULL.equals(paramObject)) && (!(paramObject instanceof Byte)) && (!(paramObject instanceof Character)) && (!(paramObject instanceof Short)) && (!(paramObject instanceof Integer)) && (!(paramObject instanceof Long)) && (!(paramObject instanceof Boolean)) && (!(paramObject instanceof Float)) && (!(paramObject instanceof Double)) && (!(paramObject instanceof String))) {
if ((paramObject instanceof Collection))
{
paramObject = new JSONArray((Collection)paramObject);
}
else if (paramObject.getClass().isArray())
{
paramObject = new JSONArray(paramObject);
}
else if ((paramObject instanceof Map))
{
paramObject = new JSONObject((Map)paramObject);
}
else
{
localPackage = paramObject.getClass().getPackage();
if (localPackage == null) {
break label240;
}
}
}
label240:
for (String str = localPackage.getName();; str = "")
{
if ((str.startsWith("java.")) || (str.startsWith("javax.")) || (paramObject.getClass().getClassLoader() == null))
{
paramObject = paramObject.toString();
}
else
{
JSONObject localJSONObject = new JSONObject(paramObject);
paramObject = localJSONObject;
}
return paramObject;
}
}
public JSONObject append(String paramString, Object paramObject)
throws JSONException
{
testValidity(paramObject);
Object localObject = opt(paramString);
if (localObject == null) {
put(paramString, new JSONArray().put(paramObject));
}
for (;;)
{
return this;
if (!(localObject instanceof JSONArray)) {
break;
}
put(paramString, ((JSONArray)localObject).put(paramObject));
}
throw new JSONException("JSONObject[" + paramString + "] is not a JSONArray.");
}
public Object get(String paramString)
throws JSONException
{
if (paramString == null) {
throw new JSONException("Null key.");
}
Object localObject = opt(paramString);
if (localObject == null) {
throw new JSONException("JSONObject[" + quote(paramString) + "] not found.");
}
return localObject;
}
public boolean getBoolean(String paramString)
throws JSONException
{
Object localObject = get(paramString);
if ((localObject.equals(Boolean.FALSE)) || (((localObject instanceof String)) && (((String)localObject).equalsIgnoreCase("false")))) {}
for (boolean bool = false;; bool = true)
{
return bool;
if ((!localObject.equals(Boolean.TRUE)) && ((!(localObject instanceof String)) || (!((String)localObject).equalsIgnoreCase("true")))) {
break;
}
}
throw new JSONException("JSONObject[" + quote(paramString) + "] is not a Boolean.");
}
public int getInt(String paramString)
throws JSONException
{
Object localObject = get(paramString);
int j;
try
{
if ((localObject instanceof Number))
{
j = ((Number)localObject).intValue();
}
else
{
int i = Integer.parseInt((String)localObject);
j = i;
}
}
catch (Exception localException)
{
throw new JSONException("JSONObject[" + quote(paramString) + "] is not an int.");
}
return j;
}
public JSONArray getJSONArray(String paramString)
throws JSONException
{
Object localObject = get(paramString);
if ((localObject instanceof JSONArray)) {
return (JSONArray)localObject;
}
throw new JSONException("JSONObject[" + quote(paramString) + "] is not a JSONArray.");
}
public JSONObject getJSONObject(String paramString)
throws JSONException
{
Object localObject = get(paramString);
if ((localObject instanceof JSONObject)) {
return (JSONObject)localObject;
}
throw new JSONException("JSONObject[" + quote(paramString) + "] is not a JSONObject.");
}
public long getLong(String paramString)
throws JSONException
{
Object localObject = get(paramString);
long l2;
try
{
if ((localObject instanceof Number))
{
l2 = ((Number)localObject).longValue();
}
else
{
long l1 = Long.parseLong((String)localObject);
l2 = l1;
}
}
catch (Exception localException)
{
throw new JSONException("JSONObject[" + quote(paramString) + "] is not a long.");
}
return l2;
}
public String getString(String paramString)
throws JSONException
{
Object localObject = get(paramString);
if (localObject == NULL) {}
for (String str = null;; str = localObject.toString()) {
return str;
}
}
public boolean has(String paramString)
{
return this.map.containsKey(paramString);
}
public boolean isNull(String paramString)
{
return NULL.equals(opt(paramString));
}
public Iterator keys()
{
return this.map.keySet().iterator();
}
public int length()
{
return this.map.size();
}
public JSONArray names()
{
JSONArray localJSONArray = new JSONArray();
Iterator localIterator = keys();
while (localIterator.hasNext()) {
localJSONArray.put(localIterator.next());
}
if (localJSONArray.length() == 0) {
localJSONArray = null;
}
return localJSONArray;
}
public Object opt(String paramString)
{
if (paramString == null) {}
for (Object localObject = null;; localObject = this.map.get(paramString)) {
return localObject;
}
}
public JSONObject put(String paramString, double paramDouble)
throws JSONException
{
put(paramString, new Double(paramDouble));
return this;
}
public JSONObject put(String paramString, int paramInt)
throws JSONException
{
put(paramString, new Integer(paramInt));
return this;
}
public JSONObject put(String paramString, long paramLong)
throws JSONException
{
put(paramString, new Long(paramLong));
return this;
}
public JSONObject put(String paramString, Object paramObject)
throws JSONException
{
if (paramString == null) {
throw new JSONException("Null key.");
}
if (paramObject != null)
{
testValidity(paramObject);
this.map.put(paramString, paramObject);
}
for (;;)
{
return this;
remove(paramString);
}
}
public JSONObject put(String paramString, Collection paramCollection)
throws JSONException
{
put(paramString, new JSONArray(paramCollection));
return this;
}
public JSONObject put(String paramString, Map paramMap)
throws JSONException
{
put(paramString, new JSONObject(paramMap));
return this;
}
public JSONObject put(String paramString, boolean paramBoolean)
throws JSONException
{
if (paramBoolean) {}
for (Boolean localBoolean = Boolean.TRUE;; localBoolean = Boolean.FALSE)
{
put(paramString, localBoolean);
return this;
}
}
public JSONObject putOnce(String paramString, Object paramObject)
throws JSONException
{
if ((paramString != null) && (paramObject != null))
{
if (opt(paramString) != null) {
throw new JSONException("Duplicate key \"" + paramString + "\"");
}
put(paramString, paramObject);
}
return this;
}
public JSONObject putOpt(String paramString, Object paramObject)
throws JSONException
{
if ((paramString != null) && (paramObject != null)) {
put(paramString, paramObject);
}
return this;
}
public Object remove(String paramString)
{
return this.map.remove(paramString);
}
public Iterator sortedKeys()
{
return new TreeSet(this.map.keySet()).iterator();
}
public String toString()
{
String str1;
try
{
Iterator localIterator = keys();
StringBuilder localStringBuilder = new StringBuilder("{");
while (localIterator.hasNext())
{
if (localStringBuilder.length() > 1) {
localStringBuilder.append(',');
}
Object localObject = localIterator.next();
localStringBuilder.append(quote(localObject.toString()));
localStringBuilder.append(':');
localStringBuilder.append(valueToString(this.map.get(localObject)));
}
localStringBuilder.append('}');
String str2 = localStringBuilder.toString();
str1 = str2;
}
catch (Exception localException)
{
str1 = null;
}
return str1;
}
public String toString(int paramInt)
throws JSONException
{
return toString(paramInt, 0);
}
String toString(int paramInt1, int paramInt2)
throws JSONException
{
int i = length();
String str;
if (i == 0)
{
str = "{}";
return str;
}
Iterator localIterator = sortedKeys();
int j = paramInt2 + paramInt1;
StringBuilder localStringBuilder = new StringBuilder("{");
if (i == 1)
{
Object localObject2 = localIterator.next();
localStringBuilder.append(quote(localObject2.toString()));
localStringBuilder.append(": ");
localStringBuilder.append(valueToString(this.map.get(localObject2), paramInt1, paramInt2));
}
for (;;)
{
localStringBuilder.append('}');
str = localStringBuilder.toString();
break;
Object localObject1;
localStringBuilder.append(quote(localObject1.toString()));
localStringBuilder.append(": ");
localStringBuilder.append(valueToString(this.map.get(localObject1), paramInt1, j));
if (localIterator.hasNext())
{
localObject1 = localIterator.next();
if (localStringBuilder.length() > 1) {
localStringBuilder.append(",\n");
}
for (;;)
{
for (int m = 0; m < j; m++) {
localStringBuilder.append(' ');
}
break;
localStringBuilder.append('\n');
}
}
if (localStringBuilder.length() > 1)
{
localStringBuilder.append('\n');
for (int k = 0; k < paramInt2; k++) {
localStringBuilder.append(' ');
}
}
}
}
public Writer write(Writer paramWriter)
throws JSONException
{
for (int i = 0;; i = 1)
{
Object localObject2;
try
{
Iterator localIterator = keys();
paramWriter.write(123);
if (!localIterator.hasNext()) {
break label138;
}
if (i != 0) {
paramWriter.write(44);
}
Object localObject1 = localIterator.next();
paramWriter.write(quote(localObject1.toString()));
paramWriter.write(58);
localObject2 = this.map.get(localObject1);
if ((localObject2 instanceof JSONObject)) {
((JSONObject)localObject2).write(paramWriter);
} else if ((localObject2 instanceof JSONArray)) {
((JSONArray)localObject2).write(paramWriter);
}
}
catch (IOException localIOException)
{
throw new JSONException(localIOException);
}
paramWriter.write(valueToString(localObject2));
continue;
label138:
paramWriter.write(125);
return paramWriter;
}
}
private static final class Null
{
protected final Object clone()
{
return this;
}
public boolean equals(Object paramObject)
{
if ((paramObject == null) || (paramObject == this)) {}
for (boolean bool = true;; bool = false) {
return bool;
}
}
public String toString()
{
return "null";
}
}
}
/* Location: F:\neembuu\Research\android_apps\output_jar.jar
* Qualified Name: twitter4j.internal.org.json.JSONObject
* JD-Core Version: 0.7.0.1
*/