1

我在java中创建和设置如下值

public Class creatObjectWithDefaultValue(String className) throws IllegalArgumentException, IllegalAccessException {
        DefaultParamValues defaultParamValues = null;
        Class objectClass = null;
        try {
            objectClass = Class.forName(className);
             Field[] fields = objectClass.getClass().getDeclaredFields();

             for(Field f:fields){
                    if(!f.isAccessible()){
                        f.setAccessible(true);
                        Class<?> type = f.getType();

                        if(type.equals(Integer.class)){
                            f.set(objectClass, defaultParamValues.INTEGER);  
                        } else if(type.equals(BigInteger.class)){
                            f.set(objectClass, defaultParamValues.BIGINTEGER);  
                        }else if(type.equals(LocalDate.class)){
                            f.set(objectClass, defaultParamValues.DATE);  
                        }else if(type.equals(Boolean.class)){
                            f.set(objectClass, defaultParamValues.BOOLEAN);  
                        }else if(type.equals(Long.class)){
                            f.set(objectClass, defaultParamValues.LONGVALUE);  
                        }
                        f.setAccessible(false);
                    }
                    //System.out.println(f.get(objectClass));
                }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return objectClass;
    }

现在我想转换返回对象,因为JSON or JSON Array我尝试了这样的事情,但它抛出异常The constructor JSONObject(Class) is undefined

System.out.println ( new JSONObject( te.creatObjectWithDefaultValue("com.hexgen.ro.request.CreateRequisitionRO") ).toString () );

请帮我纠正错误。

此致

4

3 回答 3

3

为什么不使用Jackson来处理 JSON 数据?重新发明轮子最容易出错,并且仅适用于教育或根本没有库或框架适合您的目的的情况。

现在,对于JSON <-> 对象转换,没有一个理由不使用更高级别的框架,除非您明确尝试研究反射本身。

于 2013-04-29T09:33:40.307 回答
1

JSONObject 中没有带参数类的构造函数。

但是您可以创建该类的一个对象并将其传递给 jsonobject 构造函数:

System.out.println ( new JSONObject(te.creatObjectWithDefaultValue("com.hexgen.ro.request.CreateRequisitionRO").newInstance() ).toString () );

这仅适用于具有无参数构造函数的类

于 2013-04-29T09:32:35.247 回答
1

这很清楚。

The constructor JSONObject(Class) is undefined

API → http://www.json.org/javadoc/org/json/JSONObject.html

于 2013-04-29T09:33:21.920 回答