throw new JSONException(JSONObject[ + JSONUtils.quote(key) + ] is not a number.);

2024-01-08 08:32

本文主要是介绍throw new JSONException(JSONObject[ + JSONUtils.quote(key) + ] is not a number.);,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JSONObject.get***  null的话回报JSONException,大家注意下,附以下源码,正常try catch处理即可!!


package net.sf.json;import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.io.Writer;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import net.sf.ezmorph.Morpher;
import net.sf.ezmorph.MorpherRegistry;
import net.sf.ezmorph.array.ObjectArrayMorpher;
import net.sf.ezmorph.bean.BeanMorpher;
import net.sf.ezmorph.object.IdentityObjectMorpher;
import net.sf.json.processors.DefaultValueProcessor;
import net.sf.json.processors.JsonBeanProcessor;
import net.sf.json.processors.JsonValueProcessor;
import net.sf.json.processors.JsonVerifier;
import net.sf.json.processors.PropertyNameProcessor;
import net.sf.json.regexp.RegexpMatcher;
import net.sf.json.regexp.RegexpUtils;
import net.sf.json.util.CycleDetectionStrategy;
import net.sf.json.util.EnumMorpher;
import net.sf.json.util.JSONTokener;
import net.sf.json.util.JSONUtils;
import net.sf.json.util.NewBeanInstanceStrategy;
import net.sf.json.util.PropertyFilter;
import net.sf.json.util.PropertySetStrategy;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaClass;
import org.apache.commons.beanutils.DynaProperty;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.map.ListOrderedMap;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;public final class JSONObject extends AbstractJSONimplements JSON, Map, Comparable
{private static final Log log = LogFactory.getLog(JSONObject.class);private boolean nullObject;private Map properties;public static JSONObject fromObject(Object object){return fromObject(object, new JsonConfig());}public static JSONObject fromObject(Object object, JsonConfig jsonConfig){if ((object == null) || (JSONUtils.isNull(object)))return new JSONObject(true);if ((object instanceof Enum))throw new JSONException("'object' is an Enum. Use JSONArray instead");if (((object instanceof Annotation)) || ((object != null) && (object.getClass().isAnnotation()))){throw new JSONException("'object' is an Annotation.");}if ((object instanceof JSONObject))return _fromJSONObject((JSONObject)object, jsonConfig);if ((object instanceof DynaBean))return _fromDynaBean((DynaBean)object, jsonConfig);if ((object instanceof JSONTokener))return _fromJSONTokener((JSONTokener)object, jsonConfig);if ((object instanceof JSONString))return _fromJSONString((JSONString)object, jsonConfig);if ((object instanceof Map))return _fromMap((Map)object, jsonConfig);if ((object instanceof String))return _fromString((String)object, jsonConfig);if ((JSONUtils.isNumber(object)) || (JSONUtils.isBoolean(object)) || (JSONUtils.isString(object))){return new JSONObject();}if (JSONUtils.isArray(object)) {throw new JSONException("'object' is an array. Use JSONArray instead");}return _fromBean(object, jsonConfig);}public static Object toBean(JSONObject jsonObject){if ((jsonObject == null) || (jsonObject.isNullObject())) {return null;}DynaBean dynaBean = null;JsonConfig jsonConfig = new JsonConfig();Map props = JSONUtils.getProperties(jsonObject);dynaBean = JSONUtils.newDynaBean(jsonObject, jsonConfig);Iterator entries = jsonObject.names(jsonConfig).iterator();while (entries.hasNext()) {String name = (String)entries.next();String key = JSONUtils.convertToJavaIdentifier(name, jsonConfig);Class type = (Class)props.get(name);Object value = jsonObject.get(name);try {if (!JSONUtils.isNull(value)) {if ((value instanceof JSONArray))dynaBean.set(key, JSONArray.toCollection((JSONArray)value));else if ((String.class.isAssignableFrom(type)) || (Boolean.class.isAssignableFrom(type)) || (JSONUtils.isNumber(type)) || (Character.class.isAssignableFrom(type)) || (JSONFunction.class.isAssignableFrom(type))){dynaBean.set(key, value);}else dynaBean.set(key, toBean((JSONObject)value));}else if (type.isPrimitive()){log.warn("Tried to assign null value to " + key + ":" + type.getName());dynaBean.set(key, JSONUtils.getMorpherRegistry().morph(type, null));}else {dynaBean.set(key, null);}}catch (JSONException jsone) {throw jsone;} catch (Exception e) {throw new JSONException("Error while setting property=" + name + " type" + type, e);}}return dynaBean;}public static Object toBean(JSONObject jsonObject, Class beanClass){JsonConfig jsonConfig = new JsonConfig();jsonConfig.setRootClass(beanClass);return toBean(jsonObject, jsonConfig);}public static Object toBean(JSONObject jsonObject, Class beanClass, Map classMap){JsonConfig jsonConfig = new JsonConfig();jsonConfig.setRootClass(beanClass);jsonConfig.setClassMap(classMap);return toBean(jsonObject, jsonConfig);}public static Object toBean(JSONObject jsonObject, JsonConfig jsonConfig){if ((jsonObject == null) || (jsonObject.isNullObject())) {return null;}Class beanClass = jsonConfig.getRootClass();Map classMap = jsonConfig.getClassMap();if (beanClass == null) {return toBean(jsonObject);}if (classMap == null) {classMap = Collections.EMPTY_MAP;}Object bean = null;try {if (beanClass.isInterface()) {if (!Map.class.isAssignableFrom(beanClass)) {throw new JSONException("beanClass is an interface. " + beanClass);}bean = new HashMap();}else {bean = jsonConfig.getNewBeanInstanceStrategy().newInstance(beanClass, jsonObject);}}catch (JSONException jsone) {throw jsone;} catch (Exception e) {throw new JSONException(e);}Map props = JSONUtils.getProperties(jsonObject);PropertyFilter javaPropertyFilter = jsonConfig.getJavaPropertyFilter();Iterator entries = jsonObject.names(jsonConfig).iterator();while (entries.hasNext()) {String name = (String)entries.next();Class type = (Class)props.get(name);Object value = jsonObject.get(name);if ((javaPropertyFilter != null) && (javaPropertyFilter.apply(bean, name, value))) {continue;}String key = (Map.class.isAssignableFrom(beanClass)) && (jsonConfig.isSkipJavaIdentifierTransformationInMapKeys()) ? name : JSONUtils.convertToJavaIdentifier(name, jsonConfig);PropertyNameProcessor propertyNameProcessor = jsonConfig.findJavaPropertyNameProcessor(beanClass);if (propertyNameProcessor != null)key = propertyNameProcessor.processPropertyName(beanClass, key);try{if (Map.class.isAssignableFrom(beanClass)){if (JSONUtils.isNull(value)) {setProperty(bean, key, value, jsonConfig);} else if ((value instanceof JSONArray)) {setProperty(bean, key, convertPropertyValueToCollection(key, value, jsonConfig, name, classMap, List.class), jsonConfig);}else if ((String.class.isAssignableFrom(type)) || (JSONUtils.isBoolean(type)) || (JSONUtils.isNumber(type)) || (JSONUtils.isString(type)) || (JSONFunction.class.isAssignableFrom(type))){if ((jsonConfig.isHandleJettisonEmptyElement()) && ("".equals(value)))setProperty(bean, key, null, jsonConfig);elsesetProperty(bean, key, value, jsonConfig);}else {Class targetClass = findTargetClass(key, classMap);targetClass = targetClass == null ? findTargetClass(name, classMap) : targetClass;JsonConfig jsc = jsonConfig.copy();jsc.setRootClass(targetClass);jsc.setClassMap(classMap);if (targetClass != null)setProperty(bean, key, toBean((JSONObject)value, jsc), jsonConfig);elsesetProperty(bean, key, toBean((JSONObject)value), jsonConfig);}}else {PropertyDescriptor pd = PropertyUtils.getPropertyDescriptor(bean, key);if ((pd != null) && (pd.getWriteMethod() == null)) {log.info("Property '" + key + "' of " + bean.getClass() + " has no write method. SKIPPED.");continue;}if (pd != null) {Class targetType = pd.getPropertyType();if (!JSONUtils.isNull(value)) {if ((value instanceof JSONArray)) {if (List.class.isAssignableFrom(pd.getPropertyType())) {setProperty(bean, key, convertPropertyValueToCollection(key, value, jsonConfig, name, classMap, pd.getPropertyType()), jsonConfig);}else if (Set.class.isAssignableFrom(pd.getPropertyType())) {setProperty(bean, key, convertPropertyValueToCollection(key, value, jsonConfig, name, classMap, pd.getPropertyType()), jsonConfig);}else {setProperty(bean, key, convertPropertyValueToArray(key, value, targetType, jsonConfig, classMap), jsonConfig);}}else if ((String.class.isAssignableFrom(type)) || (JSONUtils.isBoolean(type)) || (JSONUtils.isNumber(type)) || (JSONUtils.isString(type)) || (JSONFunction.class.isAssignableFrom(type))){if (pd != null) {if ((jsonConfig.isHandleJettisonEmptyElement()) && ("".equals(value)))setProperty(bean, key, null, jsonConfig);else if (!targetType.isInstance(value)) {setProperty(bean, key, morphPropertyValue(key, value, type, targetType), jsonConfig);}elsesetProperty(bean, key, value, jsonConfig);}else if ((beanClass == null) || ((bean instanceof Map)))setProperty(bean, key, value, jsonConfig);else {log.warn("Tried to assign property " + key + ":" + type.getName() + " to bean of class " + bean.getClass().getName());}}else if (jsonConfig.isHandleJettisonSingleElementArray()) {JSONArray array = new JSONArray().element(value, jsonConfig);Class newTargetClass = findTargetClass(key, classMap);newTargetClass = newTargetClass == null ? findTargetClass(name, classMap) : newTargetClass;JsonConfig jsc = jsonConfig.copy();jsc.setRootClass(newTargetClass);jsc.setClassMap(classMap);if (targetType.isArray()) {setProperty(bean, key, JSONArray.toArray(array, jsc), jsonConfig);} else if (JSONArray.class.isAssignableFrom(targetType)) {setProperty(bean, key, array, jsonConfig);} else if ((List.class.isAssignableFrom(targetType)) || (Set.class.isAssignableFrom(targetType))){jsc.setCollectionType(targetType);setProperty(bean, key, JSONArray.toCollection(array, jsc), jsonConfig);}else {setProperty(bean, key, toBean((JSONObject)value, jsc), jsonConfig);}} else {if ((targetType == Object.class) || (targetType.isInterface())) {Class targetTypeCopy = targetType;targetType = findTargetClass(key, classMap);targetType = targetType == null ? findTargetClass(name, classMap) : targetType;targetType = (targetType == null) && (targetTypeCopy.isInterface()) ? targetTypeCopy : targetType;}JsonConfig jsc = jsonConfig.copy();jsc.setRootClass(targetType);jsc.setClassMap(classMap);setProperty(bean, key, toBean((JSONObject)value, jsc), jsonConfig);}}else if (type.isPrimitive()){log.warn("Tried to assign null value to " + key + ":" + type.getName());setProperty(bean, key, JSONUtils.getMorpherRegistry().morph(type, null), jsonConfig);}else {setProperty(bean, key, null, jsonConfig);}}else if (!JSONUtils.isNull(value)) {if ((value instanceof JSONArray)) {setProperty(bean, key, convertPropertyValueToCollection(key, value, jsonConfig, name, classMap, List.class), jsonConfig);}else if ((String.class.isAssignableFrom(type)) || (JSONUtils.isBoolean(type)) || (JSONUtils.isNumber(type)) || (JSONUtils.isString(type)) || (JSONFunction.class.isAssignableFrom(type))){if ((beanClass == null) || ((bean instanceof Map)) || (jsonConfig.getPropertySetStrategy() != null) || (!jsonConfig.isIgnorePublicFields())){setProperty(bean, key, value, jsonConfig);}else log.warn("Tried to assign property " + key + ":" + type.getName() + " to bean of class " + bean.getClass().getName());}else if (jsonConfig.isHandleJettisonSingleElementArray()) {Class newTargetClass = findTargetClass(key, classMap);newTargetClass = newTargetClass == null ? findTargetClass(name, classMap) : newTargetClass;JsonConfig jsc = jsonConfig.copy();jsc.setRootClass(newTargetClass);jsc.setClassMap(classMap);setProperty(bean, key, toBean((JSONObject)value, jsc), jsonConfig);} else {setProperty(bean, key, value, jsonConfig);}}else if (type.isPrimitive()){log.warn("Tried to assign null value to " + key + ":" + type.getName());setProperty(bean, key, JSONUtils.getMorpherRegistry().morph(type, null), jsonConfig);}else {setProperty(bean, key, null, jsonConfig);}}}catch (JSONException jsone){throw jsone;} catch (Exception e) {throw new JSONException("Error while setting property=" + name + " type " + type, e);}}return bean;}public static Object toBean(JSONObject jsonObject, Object root, JsonConfig jsonConfig){if ((jsonObject == null) || (jsonObject.isNullObject()) || (root == null)) {return root;}Class rootClass = root.getClass();if (rootClass.isInterface()) {throw new JSONException("Root bean is an interface. " + rootClass);}Map classMap = jsonConfig.getClassMap();if (classMap == null) {classMap = Collections.EMPTY_MAP;}Map props = JSONUtils.getProperties(jsonObject);PropertyFilter javaPropertyFilter = jsonConfig.getJavaPropertyFilter();Iterator entries = jsonObject.names(jsonConfig).iterator();while (entries.hasNext()) {String name = (String)entries.next();Class type = (Class)props.get(name);Object value = jsonObject.get(name);if ((javaPropertyFilter != null) && (javaPropertyFilter.apply(root, name, value))) {continue;}String key = JSONUtils.convertToJavaIdentifier(name, jsonConfig);try {PropertyDescriptor pd = PropertyUtils.getPropertyDescriptor(root, key);if ((pd != null) && (pd.getWriteMethod() == null)) {log.info("Property '" + key + "' of " + root.getClass() + " has no write method. SKIPPED.");continue;}if (!JSONUtils.isNull(value)) {if ((value instanceof JSONArray)) {if ((pd == null) || (List.class.isAssignableFrom(pd.getPropertyType()))) {Class targetClass = findTargetClass(key, classMap);targetClass = targetClass == null ? findTargetClass(name, classMap) : targetClass;Object newRoot = jsonConfig.getNewBeanInstanceStrategy().newInstance(targetClass, null);List list = JSONArray.toList((JSONArray)value, newRoot, jsonConfig);setProperty(root, key, list, jsonConfig);} else {Class innerType = JSONUtils.getInnerComponentType(pd.getPropertyType());Class targetInnerType = findTargetClass(key, classMap);if ((innerType.equals(Object.class)) && (targetInnerType != null) && (!targetInnerType.equals(Object.class))){innerType = targetInnerType;}Object newRoot = jsonConfig.getNewBeanInstanceStrategy().newInstance(innerType, null);Object array = JSONArray.toArray((JSONArray)value, newRoot, jsonConfig);if ((innerType.isPrimitive()) || (JSONUtils.isNumber(innerType)) || (Boolean.class.isAssignableFrom(innerType)) || (JSONUtils.isString(innerType))){array = JSONUtils.getMorpherRegistry().morph(Array.newInstance(innerType, 0).getClass(), array);}else if (!array.getClass().equals(pd.getPropertyType())){if (!pd.getPropertyType().equals(Object.class)){Morpher morpher = JSONUtils.getMorpherRegistry().getMorpherFor(Array.newInstance(innerType, 0).getClass());if (IdentityObjectMorpher.getInstance().equals(morpher)){ObjectArrayMorpher beanMorpher = new ObjectArrayMorpher(new BeanMorpher(innerType, JSONUtils.getMorpherRegistry()));JSONUtils.getMorpherRegistry().registerMorpher(beanMorpher);}array = JSONUtils.getMorpherRegistry().morph(Array.newInstance(innerType, 0).getClass(), array);}}setProperty(root, key, array, jsonConfig);}} else if ((String.class.isAssignableFrom(type)) || (JSONUtils.isBoolean(type)) || (JSONUtils.isNumber(type)) || (JSONUtils.isString(type)) || (JSONFunction.class.isAssignableFrom(type))){if (pd != null) {if ((jsonConfig.isHandleJettisonEmptyElement()) && ("".equals(value))) {setProperty(root, key, null, jsonConfig);} else if (!pd.getPropertyType().isInstance(value)){Morpher morpher = JSONUtils.getMorpherRegistry().getMorpherFor(pd.getPropertyType());if (IdentityObjectMorpher.getInstance().equals(morpher)){log.warn("Can't transform property '" + key + "' from " + type.getName() + " into " + pd.getPropertyType().getName() + ". Will register a default BeanMorpher");JSONUtils.getMorpherRegistry().registerMorpher(new BeanMorpher(pd.getPropertyType(), JSONUtils.getMorpherRegistry()));}setProperty(root, key, JSONUtils.getMorpherRegistry().morph(pd.getPropertyType(), value), jsonConfig);}else {setProperty(root, key, value, jsonConfig);}} else if ((root instanceof Map))setProperty(root, key, value, jsonConfig);else {log.warn("Tried to assign property " + key + ":" + type.getName() + " to bean of class " + root.getClass().getName());}}else if (pd != null) {Class targetClass = pd.getPropertyType();if (jsonConfig.isHandleJettisonSingleElementArray()) {JSONArray array = new JSONArray().element(value, jsonConfig);Class newTargetClass = findTargetClass(key, classMap);newTargetClass = newTargetClass == null ? findTargetClass(name, classMap) : newTargetClass;Object newRoot = jsonConfig.getNewBeanInstanceStrategy().newInstance(newTargetClass, null);if (targetClass.isArray()) {setProperty(root, key, JSONArray.toArray(array, newRoot, jsonConfig), jsonConfig);}else if (Collection.class.isAssignableFrom(targetClass)) {setProperty(root, key, JSONArray.toList(array, newRoot, jsonConfig), jsonConfig);}else if (JSONArray.class.isAssignableFrom(targetClass))setProperty(root, key, array, jsonConfig);elsesetProperty(root, key, toBean((JSONObject)value, newRoot, jsonConfig), jsonConfig);}else{if (targetClass == Object.class) {targetClass = findTargetClass(key, classMap);targetClass = targetClass == null ? findTargetClass(name, classMap) : targetClass;}Object newRoot = jsonConfig.getNewBeanInstanceStrategy().newInstance(targetClass, null);setProperty(root, key, toBean((JSONObject)value, newRoot, jsonConfig), jsonConfig);}}else if ((root instanceof Map)) {Class targetClass = findTargetClass(key, classMap);targetClass = targetClass == null ? findTargetClass(name, classMap) : targetClass;Object newRoot = jsonConfig.getNewBeanInstanceStrategy().newInstance(targetClass, null);setProperty(root, key, toBean((JSONObject)value, newRoot, jsonConfig), jsonConfig);}else {log.warn("Tried to assign property " + key + ":" + type.getName() + " to bean of class " + rootClass.getName());}}else if (type.isPrimitive()){log.warn("Tried to assign null value to " + key + ":" + type.getName());setProperty(root, key, JSONUtils.getMorpherRegistry().morph(type, null), jsonConfig);}else {setProperty(root, key, null, jsonConfig);}}catch (JSONException jsone) {throw jsone;} catch (Exception e) {throw new JSONException("Error while setting property=" + name + " type " + type, e);}}return root;}private static JSONObject _fromBean(Object bean, JsonConfig jsonConfig){if (!addInstance(bean)) {try {return jsonConfig.getCycleDetectionStrategy().handleRepeatedReferenceAsObject(bean);}catch (JSONException jsone) {removeInstance(bean);fireErrorEvent(jsone, jsonConfig);throw jsone;} catch (RuntimeException e) {removeInstance(bean);JSONException jsone = new JSONException(e);fireErrorEvent(jsone, jsonConfig);throw jsone;}}fireObjectStartEvent(jsonConfig);JsonBeanProcessor processor = jsonConfig.findJsonBeanProcessor(bean.getClass());if (processor != null) {JSONObject json = null;try {json = processor.processBean(bean, jsonConfig);if (json == null) {json = (JSONObject)jsonConfig.findDefaultValueProcessor(bean.getClass()).getDefaultValue(bean.getClass());if (json == null) {json = new JSONObject(true);}}removeInstance(bean);fireObjectEndEvent(jsonConfig);} catch (JSONException jsone) {removeInstance(bean);fireErrorEvent(jsone, jsonConfig);throw jsone;} catch (RuntimeException e) {removeInstance(bean);JSONException jsone = new JSONException(e);fireErrorEvent(jsone, jsonConfig);throw jsone;}return json;}Class beanClass = bean.getClass();PropertyNameProcessor propertyNameProcessor = jsonConfig.findJsonPropertyNameProcessor(beanClass);Collection exclusions = jsonConfig.getMergedExcludes(beanClass);JSONObject jsonObject = new JSONObject();try {PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(bean);PropertyFilter jsonPropertyFilter = jsonConfig.getJsonPropertyFilter();for (int i = 0; i < pds.length; i++) {boolean bypass = false;String key = pds[i].getName();if (exclusions.contains(key)){continue;}if ((jsonConfig.isIgnoreTransientFields()) && (isTransientField(key, beanClass, jsonConfig))){continue;}Class type = pds[i].getPropertyType();try { pds[i].getReadMethod();} catch (Exception e){String warning = "Property '" + key + "' of " + beanClass + " has no read method. SKIPPED";fireWarnEvent(warning, jsonConfig);log.info(warning);continue;}if (pds[i].getReadMethod() != null){if (isTransient(pds[i].getReadMethod(), jsonConfig))continue;Object value = PropertyUtils.getProperty(bean, key);if ((jsonPropertyFilter != null) && (jsonPropertyFilter.apply(bean, key, value))) {continue;}JsonValueProcessor jsonValueProcessor = jsonConfig.findJsonValueProcessor(beanClass, type, key);if (jsonValueProcessor != null) {value = jsonValueProcessor.processObjectValue(key, value, jsonConfig);bypass = true;if (!JsonVerifier.isValidJsonValue(value)) {throw new JSONException("Value is not a valid JSON value. " + value);}}if (propertyNameProcessor != null) {key = propertyNameProcessor.processPropertyName(beanClass, key);}setValue(jsonObject, key, value, type, jsonConfig, bypass);} else {String warning = "Property '" + key + "' of " + beanClass + " has no read method. SKIPPED";fireWarnEvent(warning, jsonConfig);log.info(warning);}}try{if (!jsonConfig.isIgnorePublicFields()) {Field[] fields = beanClass.getFields();for (int i = 0; i < fields.length; i++) {boolean bypass = false;Field field = fields[i];String key = field.getName();if (exclusions.contains(key)){continue;}if ((jsonConfig.isIgnoreTransientFields()) && (isTransient(field, jsonConfig))){continue;}Class type = field.getType();Object value = field.get(bean);if ((jsonPropertyFilter != null) && (jsonPropertyFilter.apply(bean, key, value))) {continue;}JsonValueProcessor jsonValueProcessor = jsonConfig.findJsonValueProcessor(beanClass, type, key);if (jsonValueProcessor != null) {value = jsonValueProcessor.processObjectValue(key, value, jsonConfig);bypass = true;if (!JsonVerifier.isValidJsonValue(value)) {throw new JSONException("Value is not a valid JSON value. " + value);}}if (propertyNameProcessor != null) {key = propertyNameProcessor.processPropertyName(beanClass, key);}setValue(jsonObject, key, value, type, jsonConfig, bypass);}}}catch (Exception e) {log.trace("Couldn't read public fields.", e);}} catch (JSONException jsone) {removeInstance(bean);fireErrorEvent(jsone, jsonConfig);throw jsone;} catch (Exception e) {removeInstance(bean);JSONException jsone = new JSONException(e);fireErrorEvent(jsone, jsonConfig);throw jsone;}removeInstance(bean);fireObjectEndEvent(jsonConfig);return jsonObject;}private static JSONObject _fromDynaBean(DynaBean bean, JsonConfig jsonConfig) {if (bean == null) {fireObjectStartEvent(jsonConfig);fireObjectEndEvent(jsonConfig);return new JSONObject(true);}if (!addInstance(bean)) {try {return jsonConfig.getCycleDetectionStrategy().handleRepeatedReferenceAsObject(bean);}catch (JSONException jsone) {removeInstance(bean);fireErrorEvent(jsone, jsonConfig);throw jsone;} catch (RuntimeException e) {removeInstance(bean);JSONException jsone = new JSONException(e);fireErrorEvent(jsone, jsonConfig);throw jsone;}}fireObjectStartEvent(jsonConfig);JSONObject jsonObject = new JSONObject();try {DynaProperty[] props = bean.getDynaClass().getDynaProperties();Collection exclusions = jsonConfig.getMergedExcludes();PropertyFilter jsonPropertyFilter = jsonConfig.getJsonPropertyFilter();for (int i = 0; i < props.length; i++) {boolean bypass = false;DynaProperty dynaProperty = props[i];String key = dynaProperty.getName();if (exclusions.contains(key)) {continue;}Class type = dynaProperty.getType();Object value = bean.get(dynaProperty.getName());if ((jsonPropertyFilter != null) && (jsonPropertyFilter.apply(bean, key, value))) {continue;}JsonValueProcessor jsonValueProcessor = jsonConfig.findJsonValueProcessor(type, key);if (jsonValueProcessor != null) {value = jsonValueProcessor.processObjectValue(key, value, jsonConfig);bypass = true;if (!JsonVerifier.isValidJsonValue(value)) {throw new JSONException("Value is not a valid JSON value. " + value);}}setValue(jsonObject, key, value, type, jsonConfig, bypass);}} catch (JSONException jsone) {removeInstance(bean);fireErrorEvent(jsone, jsonConfig);throw jsone;} catch (RuntimeException e) {removeInstance(bean);JSONException jsone = new JSONException(e);fireErrorEvent(jsone, jsonConfig);throw jsone;}removeInstance(bean);fireObjectEndEvent(jsonConfig);return jsonObject;}private static JSONObject _fromJSONObject(JSONObject object, JsonConfig jsonConfig) {if ((object == null) || (object.isNullObject())) {fireObjectStartEvent(jsonConfig);fireObjectEndEvent(jsonConfig);return new JSONObject(true);}if (!addInstance(object)) {try {return jsonConfig.getCycleDetectionStrategy().handleRepeatedReferenceAsObject(object);}catch (JSONException jsone) {removeInstance(object);fireErrorEvent(jsone, jsonConfig);throw jsone;} catch (RuntimeException e) {removeInstance(object);JSONException jsone = new JSONException(e);fireErrorEvent(jsone, jsonConfig);throw jsone;}}fireObjectStartEvent(jsonConfig);JSONArray sa = object.names(jsonConfig);Collection exclusions = jsonConfig.getMergedExcludes();JSONObject jsonObject = new JSONObject();PropertyFilter jsonPropertyFilter = jsonConfig.getJsonPropertyFilter();for (Iterator i = sa.iterator(); i.hasNext(); ) {Object k = i.next();if (k == null) {throw new JSONException("JSON keys cannot be null.");}if ((!(k instanceof String)) && (!jsonConfig.isAllowNonStringKeys())) {throw new ClassCastException("JSON keys must be strings.");}String key = String.valueOf(k);if ("null".equals(key)) {throw new NullPointerException("JSON keys must not be null nor the 'null' string.");}if (exclusions.contains(key)) {continue;}Object value = object.opt(key);if ((jsonPropertyFilter != null) && (jsonPropertyFilter.apply(object, key, value))) {continue;}if (jsonObject.properties.containsKey(key)) {jsonObject.accumulate(key, value, jsonConfig);firePropertySetEvent(key, value, true, jsonConfig);} else {jsonObject.setInternal(key, value, jsonConfig);firePropertySetEvent(key, value, false, jsonConfig);}}removeInstance(object);fireObjectEndEvent(jsonConfig);return jsonObject;}private static JSONObject _fromJSONString(JSONString string, JsonConfig jsonConfig) {return _fromJSONTokener(new JSONTokener(string.toJSONString()), jsonConfig);}private static JSONObject _fromJSONTokener(JSONTokener tokener, JsonConfig jsonConfig){try{if (tokener.matches("null.*")) {fireObjectStartEvent(jsonConfig);fireObjectEndEvent(jsonConfig);return new JSONObject(true);}if (tokener.nextClean() != '{') {throw tokener.syntaxError("A JSONObject text must begin with '{'");}fireObjectStartEvent(jsonConfig);Collection exclusions = jsonConfig.getMergedExcludes();PropertyFilter jsonPropertyFilter = jsonConfig.getJsonPropertyFilter();JSONObject jsonObject = new JSONObject();while (true) {char c = tokener.nextClean();switch (c) {case '\000':throw tokener.syntaxError("A JSONObject text must end with '}'");case '}':fireObjectEndEvent(jsonConfig);return jsonObject;}tokener.back();String key = tokener.nextValue(jsonConfig).toString();c = tokener.nextClean();if (c == '=') {if (tokener.next() != '>')tokener.back();}else if (c != ':') {throw tokener.syntaxError("Expected a ':' after a key");}char peek = tokener.peek();boolean quoted = (peek == '"') || (peek == '\'');Object v = tokener.nextValue(jsonConfig);if ((quoted) || (!JSONUtils.isFunctionHeader(v))) {if (exclusions.contains(key)) {switch (tokener.nextClean()) {case ',':case ';':if (tokener.nextClean() == '}') {fireObjectEndEvent(jsonConfig);return jsonObject;}tokener.back();break;case '}':fireObjectEndEvent(jsonConfig);return jsonObject;default:throw tokener.syntaxError("Expected a ',' or '}'");}}if ((jsonPropertyFilter == null) || (!jsonPropertyFilter.apply(tokener, key, v))) {if ((quoted) && ((v instanceof String)) && ((JSONUtils.mayBeJSON((String)v)) || (JSONUtils.isFunction(v)))) {v = "\"" + v + "\"";}if (jsonObject.properties.containsKey(key)) {jsonObject.accumulate(key, v, jsonConfig);firePropertySetEvent(key, v, true, jsonConfig);} else {jsonObject.element(key, v, jsonConfig);firePropertySetEvent(key, v, false, jsonConfig);}}}else {String params = JSONUtils.getFunctionParams((String)v);int i = 0;StringBuffer sb = new StringBuffer();while (true) {char ch = tokener.next();if (ch == 0) {break;}if (ch == '{') {i++;}if (ch == '}') {i--;}sb.append(ch);if (i == 0) {break;}}if (i != 0) {throw tokener.syntaxError("Unbalanced '{' or '}' on prop: " + v);}String text = sb.toString();text = text.substring(1, text.length() - 1).trim();Object value = new JSONFunction(params != null ? StringUtils.split(params, ",") : null, text);if ((jsonPropertyFilter == null) || (!jsonPropertyFilter.apply(tokener, key, value))) {if (jsonObject.properties.containsKey(key)) {jsonObject.accumulate(key, value, jsonConfig);firePropertySetEvent(key, value, true, jsonConfig);} else {jsonObject.element(key, value, jsonConfig);firePropertySetEvent(key, value, false, jsonConfig);}}}switch (tokener.nextClean()) {case ',':case ';':if (tokener.nextClean() == '}') {fireObjectEndEvent(jsonConfig);return jsonObject;}tokener.back();break;case '}':fireObjectEndEvent(jsonConfig);return jsonObject;default:throw tokener.syntaxError("Expected a ',' or '}'");}}} catch (JSONException jsone) {fireErrorEvent(jsone, jsonConfig);}throw jsone;}private static JSONObject _fromMap(Map map, JsonConfig jsonConfig){if (map == null) {fireObjectStartEvent(jsonConfig);fireObjectEndEvent(jsonConfig);return new JSONObject(true);}if (!addInstance(map)) {try {return jsonConfig.getCycleDetectionStrategy().handleRepeatedReferenceAsObject(map);}catch (JSONException jsone) {removeInstance(map);fireErrorEvent(jsone, jsonConfig);throw jsone;} catch (RuntimeException e) {removeInstance(map);JSONException jsone = new JSONException(e);fireErrorEvent(jsone, jsonConfig);throw jsone;}}fireObjectStartEvent(jsonConfig);Collection exclusions = jsonConfig.getMergedExcludes();JSONObject jsonObject = new JSONObject();PropertyFilter jsonPropertyFilter = jsonConfig.getJsonPropertyFilter();try {Iterator entries = map.entrySet().iterator();while (entries.hasNext()) {boolean bypass = false;Map.Entry entry = (Map.Entry)entries.next();Object k = entry.getKey();if (k == null) {throw new JSONException("JSON keys cannot be null.");}if ((!(k instanceof String)) && (!jsonConfig.isAllowNonStringKeys())) {throw new ClassCastException("JSON keys must be strings.");}String key = String.valueOf(k);if ("null".equals(key)) {throw new NullPointerException("JSON keys must not be null nor the 'null' string.");}if (exclusions.contains(key)) {continue;}Object value = entry.getValue();if ((jsonPropertyFilter != null) && (jsonPropertyFilter.apply(map, key, value))) {continue;}if (value != null) {JsonValueProcessor jsonValueProcessor = jsonConfig.findJsonValueProcessor(value.getClass(), key);if (jsonValueProcessor != null) {value = jsonValueProcessor.processObjectValue(key, value, jsonConfig);bypass = true;if (!JsonVerifier.isValidJsonValue(value)) {throw new JSONException("Value is not a valid JSON value. " + value);}}setValue(jsonObject, key, value, value.getClass(), jsonConfig, bypass);}else if (jsonObject.properties.containsKey(key)) {jsonObject.accumulate(key, JSONNull.getInstance());firePropertySetEvent(key, JSONNull.getInstance(), true, jsonConfig);} else {jsonObject.element(key, JSONNull.getInstance());firePropertySetEvent(key, JSONNull.getInstance(), false, jsonConfig);}}}catch (JSONException jsone) {removeInstance(map);fireErrorEvent(jsone, jsonConfig);throw jsone;} catch (RuntimeException e) {removeInstance(map);JSONException jsone = new JSONException(e);fireErrorEvent(jsone, jsonConfig);throw jsone;}removeInstance(map);fireObjectEndEvent(jsonConfig);return jsonObject;}private static JSONObject _fromString(String str, JsonConfig jsonConfig) {if ((str == null) || ("null".equals(str))) {fireObjectStartEvent(jsonConfig);fireObjectEndEvent(jsonConfig);return new JSONObject(true);}return _fromJSONTokener(new JSONTokener(str), jsonConfig);}private static Object convertPropertyValueToArray(String key, Object value, Class targetType, JsonConfig jsonConfig, Map classMap){Class innerType = JSONUtils.getInnerComponentType(targetType);Class targetInnerType = findTargetClass(key, classMap);if ((innerType.equals(Object.class)) && (targetInnerType != null) && (!targetInnerType.equals(Object.class))){innerType = targetInnerType;}JsonConfig jsc = jsonConfig.copy();jsc.setRootClass(innerType);jsc.setClassMap(classMap);Object array = JSONArray.toArray((JSONArray)value, jsc);if ((innerType.isPrimitive()) || (JSONUtils.isNumber(innerType)) || (Boolean.class.isAssignableFrom(innerType)) || (JSONUtils.isString(innerType))){array = JSONUtils.getMorpherRegistry().morph(Array.newInstance(innerType, 0).getClass(), array);}else if (!array.getClass().equals(targetType)){if (!targetType.equals(Object.class)) {Morpher morpher = JSONUtils.getMorpherRegistry().getMorpherFor(Array.newInstance(innerType, 0).getClass());if (IdentityObjectMorpher.getInstance().equals(morpher)){ObjectArrayMorpher beanMorpher = new ObjectArrayMorpher(new BeanMorpher(innerType, JSONUtils.getMorpherRegistry()));JSONUtils.getMorpherRegistry().registerMorpher(beanMorpher);}array = JSONUtils.getMorpherRegistry().morph(Array.newInstance(innerType, 0).getClass(), array);}}return array;}private static List convertPropertyValueToList(String key, Object value, JsonConfig jsonConfig, String name, Map classMap){Class targetClass = findTargetClass(key, classMap);targetClass = targetClass == null ? findTargetClass(name, classMap) : targetClass;JsonConfig jsc = jsonConfig.copy();jsc.setRootClass(targetClass);jsc.setClassMap(classMap);List list = (List)JSONArray.toCollection((JSONArray)value, jsc);return list;}private static Collection convertPropertyValueToCollection(String key, Object value, JsonConfig jsonConfig, String name, Map classMap, Class collectionType){Class targetClass = findTargetClass(key, classMap);targetClass = targetClass == null ? findTargetClass(name, classMap) : targetClass;JsonConfig jsc = jsonConfig.copy();jsc.setRootClass(targetClass);jsc.setClassMap(classMap);jsc.setCollectionType(collectionType);return JSONArray.toCollection((JSONArray)value, jsc);}private static Class findTargetClass(String key, Map classMap){Class targetClass = (Class)classMap.get(key);if (targetClass == null){Iterator i = classMap.entrySet().iterator();while (i.hasNext()) {Map.Entry entry = (Map.Entry)i.next();if (RegexpUtils.getMatcher((String)entry.getKey()).matches(key)){targetClass = (Class)entry.getValue();break;}}}return targetClass;}private static boolean isTransientField(String name, Class beanClass, JsonConfig jsonConfig) {try {Field field = beanClass.getDeclaredField(name);if ((field.getModifiers() & 0x80) == 128) return true;return isTransient(field, jsonConfig);} catch (Exception e) {log.info("Error while inspecting field " + beanClass + "." + name + " for transient status.", e);}return false;}private static boolean isTransient(AnnotatedElement element, JsonConfig jsonConfig) {for (Iterator annotations = jsonConfig.getIgnoreFieldAnnotations().iterator(); annotations.hasNext(); ) {try {String annotationClassName = (String)annotations.next();if (element.getAnnotation(Class.forName(annotationClassName)) != null) return true; }catch (Exception e) {log.info("Error while inspecting " + element + " for transient status.", e);}}return false;}private static Object morphPropertyValue(String key, Object value, Class type, Class targetType) {Morpher morpher = JSONUtils.getMorpherRegistry().getMorpherFor(targetType);if (IdentityObjectMorpher.getInstance().equals(morpher)){log.warn("Can't transform property '" + key + "' from " + type.getName() + " into " + targetType.getName() + ". Will register a default Morpher");if (Enum.class.isAssignableFrom(targetType)) {JSONUtils.getMorpherRegistry().registerMorpher(new EnumMorpher(targetType));}else {JSONUtils.getMorpherRegistry().registerMorpher(new BeanMorpher(targetType, JSONUtils.getMorpherRegistry()));}}value = JSONUtils.getMorpherRegistry().morph(targetType, value);return value;}private static void setProperty(Object bean, String key, Object value, JsonConfig jsonConfig)throws Exception{PropertySetStrategy propertySetStrategy = jsonConfig.getPropertySetStrategy() != null ? jsonConfig.getPropertySetStrategy() : PropertySetStrategy.DEFAULT;propertySetStrategy.setProperty(bean, key, value, jsonConfig);}private static void setValue(JSONObject jsonObject, String key, Object value, Class type, JsonConfig jsonConfig, boolean bypass){boolean accumulated = false;if (value == null) {value = jsonConfig.findDefaultValueProcessor(type).getDefaultValue(type);if (!JsonVerifier.isValidJsonValue(value)) {throw new JSONException("Value is not a valid JSON value. " + value);}}if (jsonObject.properties.containsKey(key)) {if (String.class.isAssignableFrom(type)) {Object o = jsonObject.opt(key);if ((o instanceof JSONArray))((JSONArray)o).addString((String)value);elsejsonObject.properties.put(key, new JSONArray().element(o).addString((String)value));}else{jsonObject.accumulate(key, value, jsonConfig);}accumulated = true;}else if ((bypass) || (String.class.isAssignableFrom(type))) {jsonObject.properties.put(key, value);} else {jsonObject.setInternal(key, value, jsonConfig);}value = jsonObject.opt(key);if (accumulated) {JSONArray array = (JSONArray)value;value = array.get(array.size() - 1);}firePropertySetEvent(key, value, accumulated, jsonConfig);}public JSONObject(){this.properties = new ListOrderedMap();}public JSONObject(boolean isNull){this();this.nullObject = isNull;}public JSONObject accumulate(String key, boolean value){return _accumulate(key, value ? Boolean.TRUE : Boolean.FALSE, new JsonConfig());}public JSONObject accumulate(String key, double value){return _accumulate(key, Double.valueOf(value), new JsonConfig());}public JSONObject accumulate(String key, int value){return _accumulate(key, Integer.valueOf(value), new JsonConfig());}public JSONObject accumulate(String key, long value){return _accumulate(key, Long.valueOf(value), new JsonConfig());}public JSONObject accumulate(String key, Object value){return _accumulate(key, value, new JsonConfig());}public JSONObject accumulate(String key, Object value, JsonConfig jsonConfig){return _accumulate(key, value, jsonConfig);}public void accumulateAll(Map map) {accumulateAll(map, new JsonConfig());}public void accumulateAll(Map map, JsonConfig jsonConfig) {if ((map instanceof JSONObject)) {Iterator entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry entry = (Map.Entry)entries.next();String key = (String)entry.getKey();Object value = entry.getValue();accumulate(key, value, jsonConfig);}} else {Iterator entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry entry = (Map.Entry)entries.next();String key = String.valueOf(entry.getKey());Object value = entry.getValue();accumulate(key, value, jsonConfig);}}}public void clear() {this.properties.clear();}public int compareTo(Object obj) {if ((obj != null) && ((obj instanceof JSONObject))) {JSONObject other = (JSONObject)obj;int size1 = size();int size2 = other.size();if (size1 < size2)return -1;if (size1 > size2)return 1;if (equals(other)) {return 0;}}return -1;}public boolean containsKey(Object key) {return this.properties.containsKey(key);}public boolean containsValue(Object value) {return containsValue(value, new JsonConfig());}public boolean containsValue(Object value, JsonConfig jsonConfig) {try {value = processValue(value, jsonConfig);} catch (JSONException e) {return false;}return this.properties.containsValue(value);}public JSONObject discard(String key){verifyIsNull();this.properties.remove(key);return this;}public JSONObject element(String key, boolean value){verifyIsNull();return element(key, value ? Boolean.TRUE : Boolean.FALSE);}public JSONObject element(String key, Collection value){return element(key, value, new JsonConfig());}public JSONObject element(String key, Collection value, JsonConfig jsonConfig){if (!(value instanceof JSONArray)) {value = JSONArray.fromObject(value, jsonConfig);}return setInternal(key, value, jsonConfig);}public JSONObject element(String key, double value){verifyIsNull();Double d = new Double(value);JSONUtils.testValidity(d);return element(key, d);}public JSONObject element(String key, int value){verifyIsNull();return element(key, new Integer(value));}public JSONObject element(String key, long value){verifyIsNull();return element(key, new Long(value));}public JSONObject element(String key, Map value){return element(key, value, new JsonConfig());}public JSONObject element(String key, Map value, JsonConfig jsonConfig){verifyIsNull();if ((value instanceof JSONObject)) {return setInternal(key, value, jsonConfig);}return element(key, fromObject(value, jsonConfig), jsonConfig);}public JSONObject element(String key, Object value){return element(key, value, new JsonConfig());}public JSONObject element(String key, Object value, JsonConfig jsonConfig){verifyIsNull();if (key == null) {throw new JSONException("Null key.");}if (value != null) {value = processValue(key, value, jsonConfig);_setInternal(key, value, jsonConfig);} else {remove(key);}return this;}public JSONObject elementOpt(String key, Object value){return elementOpt(key, value, new JsonConfig());}public JSONObject elementOpt(String key, Object value, JsonConfig jsonConfig){verifyIsNull();if ((key != null) && (value != null)) {element(key, value, jsonConfig);}return this;}public Set entrySet() {return Collections.unmodifiableSet(this.properties.entrySet());}public boolean equals(Object obj) {if (obj == this) {return true;}if (obj == null) {return false;}if (!(obj instanceof JSONObject)) {return false;}JSONObject other = (JSONObject)obj;if (isNullObject()){return other.isNullObject();}if (other.isNullObject()) {return false;}if (other.size() != size()) {return false;}Iterator keys = this.properties.keySet().iterator();while (keys.hasNext()) {String key = (String)keys.next();if (!other.properties.containsKey(key)) {return false;}Object o1 = this.properties.get(key);Object o2 = other.properties.get(key);if (JSONNull.getInstance().equals(o1)){if (!JSONNull.getInstance().equals(o2)){return false;}}if (JSONNull.getInstance().equals(o2)){return false;}if (((o1 instanceof String)) && ((o2 instanceof JSONFunction))) {if (!o1.equals(String.valueOf(o2)))return false;}else if (((o1 instanceof JSONFunction)) && ((o2 instanceof String))) {if (!o2.equals(String.valueOf(o1)))return false;}else if (((o1 instanceof JSONObject)) && ((o2 instanceof JSONObject))) {if (!o1.equals(o2))return false;}else if (((o1 instanceof JSONArray)) && ((o2 instanceof JSONArray))) {if (!o1.equals(o2))return false;}else if (((o1 instanceof JSONFunction)) && ((o2 instanceof JSONFunction))) {if (!o1.equals(o2)) {return false;}}else if ((o1 instanceof String)) {if (!o1.equals(String.valueOf(o2)))return false;}else if ((o2 instanceof String)) {if (!o2.equals(String.valueOf(o1)))return false;}else {Morpher m1 = JSONUtils.getMorpherRegistry().getMorpherFor(o1.getClass());Morpher m2 = JSONUtils.getMorpherRegistry().getMorpherFor(o2.getClass());if ((m1 != null) && (m1 != IdentityObjectMorpher.getInstance())) {if (!o1.equals(JSONUtils.getMorpherRegistry().morph(o1.getClass(), o2))){return false;}} else if ((m2 != null) && (m2 != IdentityObjectMorpher.getInstance())) {if (!JSONUtils.getMorpherRegistry().morph(o1.getClass(), o1).equals(o2)){return false;}}else if (!o1.equals(o2)) {return false;}}}return true;}public Object get(Object key) {if ((key instanceof String)) {return get((String)key);}return null;}public Object get(String key){verifyIsNull();return this.properties.get(key);}public boolean getBoolean(String key){verifyIsNull();Object o = get(key);if (o != null) {if ((o.equals(Boolean.FALSE)) || (((o instanceof String)) && (((String)o).equalsIgnoreCase("false")))){return false;}if ((o.equals(Boolean.TRUE)) || (((o instanceof String)) && (((String)o).equalsIgnoreCase("true")))){return true;}}throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a Boolean.");}public double getDouble(String key){verifyIsNull();Object o = get(key);if (o != null) {try {return (o instanceof Number) ? ((Number)o).doubleValue() : Double.parseDouble((String)o);}catch (Exception e) {throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a number.");}}throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a number.");}public int getInt(String key){verifyIsNull();Object o = get(key);if (o != null) {return (o instanceof Number) ? ((Number)o).intValue() : (int)getDouble(key);}throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a number.");}public JSONArray getJSONArray(String key){verifyIsNull();Object o = get(key);if ((o != null) && ((o instanceof JSONArray))) {return (JSONArray)o;}throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a JSONArray.");}public JSONObject getJSONObject(String key){verifyIsNull();Object o = get(key);if (JSONNull.getInstance().equals(o)){return new JSONObject(true);}if ((o instanceof JSONObject)) {return (JSONObject)o;}throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a JSONObject.");}public long getLong(String key){verifyIsNull();Object o = get(key);if (o != null) {return (o instanceof Number) ? ((Number)o).longValue() : ()getDouble(key);}throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a number.");}public String getString(String key){verifyIsNull();Object o = get(key);if (o != null) {return o.toString();}throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] not found.");}public boolean has(String key){verifyIsNull();return this.properties.containsKey(key);}public int hashCode() {int hashcode = 19;if (isNullObject()) {return hashcode + JSONNull.getInstance().hashCode();}Iterator entries = this.properties.entrySet().iterator();while (entries.hasNext()) {Map.Entry entry = (Map.Entry)entries.next();Object key = entry.getKey();Object value = entry.getValue();hashcode += key.hashCode() + JSONUtils.hashCode(value);}return hashcode;}public boolean isArray() {return false;}public boolean isEmpty(){return this.properties.isEmpty();}public boolean isNullObject(){return this.nullObject;}public Iterator keys(){verifyIsNull();return keySet().iterator();}public Set keySet() {return Collections.unmodifiableSet(this.properties.keySet());}public JSONArray names(){verifyIsNull();JSONArray ja = new JSONArray();Iterator keys = keys();while (keys.hasNext()) {ja.element(keys.next());}return ja;}public JSONArray names(JsonConfig jsonConfig){verifyIsNull();JSONArray ja = new JSONArray();Iterator keys = keys();while (keys.hasNext()) {ja.element(keys.next(), jsonConfig);}return ja;}public Object opt(String key){verifyIsNull();return key == null ? null : this.properties.get(key);}public boolean optBoolean(String key){verifyIsNull();return optBoolean(key, false);}public boolean optBoolean(String key, boolean defaultValue){verifyIsNull();try {return getBoolean(key); } catch (Exception e) {}return defaultValue;}public double optDouble(String key){verifyIsNull();return optDouble(key, (0.0D / 0.0D));}public double optDouble(String key, double defaultValue){verifyIsNull();try {Object o = opt(key);return (o instanceof Number) ? ((Number)o).doubleValue() : new Double((String)o).doubleValue();} catch (Exception e) {}return defaultValue;}public int optInt(String key){verifyIsNull();return optInt(key, 0);}public int optInt(String key, int defaultValue){verifyIsNull();try {return getInt(key); } catch (Exception e) {}return defaultValue;}public JSONArray optJSONArray(String key){verifyIsNull();Object o = opt(key);return (o instanceof JSONArray) ? (JSONArray)o : null;}public JSONObject optJSONObject(String key){verifyIsNull();Object o = opt(key);return (o instanceof JSONObject) ? (JSONObject)o : null;}public long optLong(String key){verifyIsNull();return optLong(key, 0L);}public long optLong(String key, long defaultValue){verifyIsNull();try {return getLong(key); } catch (Exception e) {}return defaultValue;}public String optString(String key){verifyIsNull();return optString(key, "");}public String optString(String key, String defaultValue){verifyIsNull();Object o = opt(key);return o != null ? o.toString() : defaultValue;}public Object put(Object key, Object value) {if (key == null) {throw new IllegalArgumentException("key is null.");}Object previous = this.properties.get(key);element(String.valueOf(key), value);return previous;}public void putAll(Map map) {putAll(map, new JsonConfig());}public void putAll(Map map, JsonConfig jsonConfig) {if ((map instanceof JSONObject)) {Iterator entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry entry = (Map.Entry)entries.next();String key = (String)entry.getKey();Object value = entry.getValue();this.properties.put(key, value);}} else {Iterator entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry entry = (Map.Entry)entries.next();String key = String.valueOf(entry.getKey());Object value = entry.getValue();element(key, value, jsonConfig);}}}public Object remove(Object key) {return this.properties.remove(key);}public Object remove(String key){verifyIsNull();return this.properties.remove(key);}public int size(){return this.properties.size();}public JSONArray toJSONArray(JSONArray names){verifyIsNull();if ((names == null) || (names.size() == 0)) {return null;}JSONArray ja = new JSONArray();for (int i = 0; i < names.size(); i++) {ja.element(opt(names.getString(i)));}return ja;}public String toString(){if (isNullObject()) {return JSONNull.getInstance().toString();}try{Iterator keys = keys();StringBuffer sb = new StringBuffer("{");while (keys.hasNext()) {if (sb.length() > 1) {sb.append(',');}Object o = keys.next();sb.append(JSONUtils.quote(o.toString()));sb.append(':');sb.append(JSONUtils.valueToString(this.properties.get(o)));}sb.append('}');return sb.toString(); } catch (Exception e) {}return null;}public String toString(int indentFactor){if (isNullObject()) {return JSONNull.getInstance().toString();}if (indentFactor == 0) {return toString();}return toString(indentFactor, 0);}public String toString(int indentFactor, int indent){if (isNullObject()) {return JSONNull.getInstance().toString();}int n = size();if (n == 0) {return "{}";}if (indentFactor == 0) {return toString();}Iterator keys = keys();StringBuffer sb = new StringBuffer("{");int newindent = indent + indentFactor;if (n == 1) {Object o = keys.next();sb.append(JSONUtils.quote(o.toString()));sb.append(": ");sb.append(JSONUtils.valueToString(this.properties.get(o), indentFactor, indent));} else {while (keys.hasNext()) {Object o = keys.next();if (sb.length() > 1)sb.append(",\n");else {sb.append('\n');}for (int i = 0; i < newindent; i++) {sb.append(' ');}sb.append(JSONUtils.quote(o.toString()));sb.append(": ");sb.append(JSONUtils.valueToString(this.properties.get(o), indentFactor, newindent));}if (sb.length() > 1) {sb.append('\n');for (int i = 0; i < indent; i++) {sb.append(' ');}}for (int i = 0; i < indent; i++) {sb.insert(0, ' ');}}sb.append('}');return sb.toString();}public Collection values() {return Collections.unmodifiableCollection(this.properties.values());}public Writer write(Writer writer){try{if (isNullObject()) {writer.write(JSONNull.getInstance().toString());return writer;}boolean b = false;Iterator keys = keys();writer.write(123);while (keys.hasNext()) {if (b) {writer.write(44);}Object k = keys.next();writer.write(JSONUtils.quote(k.toString()));writer.write(58);Object v = this.properties.get(k);if ((v instanceof JSONObject))((JSONObject)v).write(writer);else if ((v instanceof JSONArray))((JSONArray)v).write(writer);else {writer.write(JSONUtils.valueToString(v));}b = true;}writer.write(125);return writer; } catch (IOException e) {}throw new JSONException(e);}private JSONObject _accumulate(String key, Object value, JsonConfig jsonConfig){if (isNullObject()) {throw new JSONException("Can't accumulate on null object");}if (!has(key)) {setInternal(key, value, jsonConfig);} else {Object o = opt(key);if ((o instanceof JSONArray))((JSONArray)o).element(value, jsonConfig);else {setInternal(key, new JSONArray().element(o).element(value, jsonConfig), jsonConfig);}}return this;}protected Object _processValue(Object value, JsonConfig jsonConfig) {if ((value instanceof JSONTokener))return _fromJSONTokener((JSONTokener)value, jsonConfig);if ((value != null) && (Enum.class.isAssignableFrom(value.getClass()))) {return ((Enum)value).name();}return super._processValue(value, jsonConfig);}private JSONObject _setInternal(String key, Object value, JsonConfig jsonConfig){verifyIsNull();if (key == null) {throw new JSONException("Null key.");}if ((JSONUtils.isString(value)) && (JSONUtils.mayBeJSON(String.valueOf(value)))) {this.properties.put(key, value);}else if ((CycleDetectionStrategy.IGNORE_PROPERTY_OBJ != value) && (CycleDetectionStrategy.IGNORE_PROPERTY_ARR != value)){this.properties.put(key, value);}return this;}private Object processValue(Object value, JsonConfig jsonConfig) {if (value != null) {JsonValueProcessor processor = jsonConfig.findJsonValueProcessor(value.getClass());if (processor != null) {value = processor.processObjectValue(null, value, jsonConfig);if (!JsonVerifier.isValidJsonValue(value)) {throw new JSONException("Value is not a valid JSON value. " + value);}}}return _processValue(value, jsonConfig);}private Object processValue(String key, Object value, JsonConfig jsonConfig) {if (value != null) {JsonValueProcessor processor = jsonConfig.findJsonValueProcessor(value.getClass(), key);if (processor != null) {value = processor.processObjectValue(null, value, jsonConfig);if (!JsonVerifier.isValidJsonValue(value)) {throw new JSONException("Value is not a valid JSON value. " + value);}}}return _processValue(value, jsonConfig);}private JSONObject setInternal(String key, Object value, JsonConfig jsonConfig){return _setInternal(key, processValue(key, value, jsonConfig), jsonConfig);}private void verifyIsNull(){if (isNullObject())throw new JSONException("null object");}
}



这篇关于throw new JSONException(JSONObject[ + JSONUtils.quote(key) + ] is not a number.);的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582876

相关文章

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

C++第四十七弹---深入理解异常机制:try, catch, throw全面解析

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】 目录 1.C语言传统的处理错误的方式 2.C++异常概念 3. 异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3 异常安全 3.4 异常规范 4.自定义异常体系 5.C++标准库的异常体系 1.C语言传统的处理错误的方式 传统的错误处理机制:

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

List list = new ArrayList();和ArrayList list=new ArrayList();的区别?

List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。 List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了A