FastJson
public class FastJson {
public static final int JSON_ARRAY=1;
public static final int JSON_OBJECT=2;
public static final int JSON_ERRO=3;
/**
* 暴露API 给调用层调用
* @param json
* @param clazz
* @return
*/
public static Object pareseObject(String json,Class clazz)
{
Object object=null;
Class<?> jsonClass=null;
//JSONArray 类型
if(json.charAt(0)=='[')
{
try {
object=toList(json,clazz);
} catch (JSONException e) {
e.printStackTrace();
}
}else if(json.charAt(0)=='{')
{
try {
JSONObject jsonObject=new JSONObject(json);
//反射得到最外层的model 作为返回值返回 一定要有空的构造方法 User
object=clazz.newInstance();
/*
得到的最外层的key集合
*/
Iterator<?> iterator=jsonObject.keys();
//遍历集合
while (iterator.hasNext())
{
String key= (String) iterator.next();
Object fieldValue=null;
//得到当前clazz类型的所有成员变量
List<Field> fields=getAllFields(clazz,null);
for (Field field:fields)
{
//将key和成员变量进行匹配
if(field.getName().equalsIgnoreCase(key))
{
field.setAccessible(true);
//得到 key所对应的值 值 可以基本类型 类类型
fieldValue=getFieldValue(field,jsonObject,key);
if(fieldValue!=null)
{
field.set(object,fieldValue);
}
field.setAccessible(false);
}
}
}
} catch (JSONException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return object;
}
/**
* 得到当前的value值
* @param field
* @param jsonObject
* @param key
* @return
*/
private static Object getFieldValue(Field field, JSONObject jsonObject, String key) throws JSONException {
Object fieldValue=null;
//得到当前成员变量类型
Class<?> fieldClass=field.getType();
if(fieldClass.getSimpleName().toString().equals("int")
||fieldClass.getSimpleName().toString().equals("Integer"))
{
fieldValue=jsonObject.getInt(key);