现在只能针对下面这样的json和比它简单的json进行解析,能帮忙扩展一下么?{
    "name": "liuyx",
    "age": 23,
    "salary": 23.3,
    "lovers": [
        {
            "name": "zhangweizhen",
            "age": 23
        },
        {
            "name": "zhaoushan",
            "age": 23
        },
        {
            "name": "huqiong",
            "age": 23
        }
    ]
}
JAVA代码:
Lists
public class Lists
{
    public static <T> ArrayList<T>  newArrayList()
    {
        return new ArrayList<T>();
    }
}
Strings代码public class Strings
{
    public static boolean isNullOrEmpty(String s)
    {
        return s == null || s.equals("");
    }    public static String nullToEmpty(String s)
    {
        return s == null ? "" : s;
    }    /**
     * 将字符串首字母大写
     * @param src
     * @return
     */
    public static String capitalize(String src)
    {
        if(src == null || src.equals("")) return src;
        char[] chars = src.toCharArray();
        final int len = chars.length;
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < len; i++)
        {
            if(i == 0)
            {
                char capChar = cap(chars[0]);
                sb.append(capChar);
            } else{
                sb.append(chars[i]);
            }
        }        return sb.toString();
    }    /**
     * 从标准包名获得前缀
     * @param canonicalName
     * @return
     */
    public static String getPrefixPackName(String canonicalName){
        String[] strs = canonicalName.split("[.]");
        int len = strs.length;
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < len - 1; i++){
            sb.append(strs[i]).append(".");
        }
        sb.delete(sb.length()-1,sb.length());
        return sb.toString();
    }    private static char cap(char src)
    {
        return (char)(src - 32);
    }
}
JSONParserUtil——通用JSON解析工具package com.pplive.androidphone.ui.login.comment_system.utils;import com.pplive.android.util.Lists;
import com.pplive.android.util.Strings;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.List;/**
 * User: youxueliu
 * Date: 13-8-21
 * Time: 下午4:49
 */
public class JSONParserUtil {    public static <T> T parser(String json,Class<T> cls){
        try{
            JSONObject jsonObject = new JSONObject(json);
            return parserJSONObj(jsonObject,cls);
        }catch (JSONException e){
            // ignore
            e.printStackTrace();
        }
        return null;
    }    private static <T> T parserJSONObj(JSONObject jsonObject,Class<T> cls){
        try{
            T bean = cls.newInstance();
            final Iterator<String> keys = jsonObject.keys();
            while(keys.hasNext()){
                final String key = keys.next();
                final Object obj = jsonObject.opt(key);
                Field field = cls.getDeclaredField(key);
                final Class<?> fieldType = field.getType();
                final String setMethodName = "set" + Strings.capitalize(key);
                final Method method = cls.getDeclaredMethod(setMethodName,fieldType);
                if(primitypeOrNull(obj))
                {
                    // 属性值默认全部认做String
                    method.invoke(bean, obj + "");
                }else if(obj instanceof JSONObject){
                    method.invoke(bean, parserJSONObj((JSONObject) obj, fieldType));
                }else if(obj instanceof JSONArray){
                    final String nestClsName = cls.getCanonicalName()+"$"+Strings.capitalize(key.substring(0, key.length() - 1));
                    final Class<?> nestCls = Class.forName(nestClsName);
                    final JSONArray jsonArray = (JSONArray)obj;
                    method.invoke(bean, parserJSONArray(jsonArray, nestCls));
                }
            }            return bean;
        }catch (Exception e){
            // ignore
            e.printStackTrace();
        }
        return null;
    }    public static <T> List<T> parserJSONArray(JSONArray jsonArray,Class<T> cls){
        final int len = jsonArray.length();
        List<T> result = Lists.newArrayList();
        for(int i = 0; i < len; i++){
             final JSONObject jsonObject = jsonArray.optJSONObject(i);
             if(jsonObject != null){
                 result.add(parserJSONObj(jsonObject,cls));
             }else{
                 // 暂时还不知道怎么做
             }
        }
        return result;
    }
    /**
     * 判断object是否是基本类型或者为null
     * @param o
     * @return
     */
    private static boolean primitypeOrNull(Object o){
        return o == null || o instanceof Integer || o instanceof Long || o instanceof Float || o instanceof Double || o instanceof String;
    }
}测试的Modelpackage com.pplive.androidphone.ui.login.comment_system.model;import java.util.List;/**
 * User: youxueliu
 * Date: 13-8-22
 * Time: 上午10:27
 */
public class Person {
    private String name;
    private String salary;
    private String age;    private List<Lover> lovers;    public List<Lover> getLovers(){
        return lovers;
    }    public void setLovers(List<Lover> lovers){
        this.lovers = lovers;
    }    public static class Lover{
        private String name;
        private String age;        public String getName() {
            return name;
        }        public void setName(String name) {
            this.name = name;
        }        public String getAge() {
            return age;
        }        public void setAge(String age) {
            this.age = age;
        }
    }    public void setName(String name){
        this.name = name;
    }    public void setSalary(String salary){
        this.salary = salary;
    }    public void setAge(String age){
        this.age = age;
    }    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", salary='" + salary + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}