将JSONObject对象转化为java对象

package util;

import org.json.JSONObject;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Iterator;

public class JsonToPo {
    //一个静态类,将json对象,转化为java
    public static Object jsonToObject(JSONObject jsonObject, Class c) throws IllegalAccessException, InstantiationException {
        Object obj=c.newInstance();
        Iterator  it=jsonObject.keySet().iterator();
        Field[] fields=c.getDeclaredFields();
        while(it.hasNext()) {
            String key = (String) it.next();
            //判断字段
            for (Field field : fields) {
                if (field.getName().equals(key)) {
                  // System.out.println("获取到的所有字段"+key);
                   useSetter(c, field, jsonObject,obj);
                    break;
                }
            }
        }
        return obj;
    }


    //调用该类的setter方法
    private static void useSetter(Class c, Field field,JSONObject jsonObject,Object obj){
        //获取字段类型以及字段名称
        Class fieldType=field.getType();
        String fieldName=field.getName();
        String methodName=toMethodName(fieldName);
        //System.out.println(methodName+"类型"+fieldType);
        //调用方法
        try {
            Method method=c.getMethod(methodName,fieldType);
          //  System.out.println(method);
            method.invoke(obj,jsonObject.get(fieldName));
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    //将fieldName转化为方法名称
    private static String toMethodName(String name){
        String methodName="set"+name.substring(0,1).toUpperCase()+name.substring(1);
        return methodName;
    }
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值