我在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 () );
请帮我纠正错误。
最好的问候
答案 0 :(得分:2)
为什么不使用Jackson来处理JSON数据?重新发明轮子通常容易出错,仅适用于教育或没有适合您目的的图书馆或框架的情况。
现在,对于 JSON&lt; - &gt;对象转换,没有一个理由不使用更高级别的框架,除非您明确尝试调查Reflection本身。
答案 1 :(得分:1)
JSONObject中没有带参数类的构造函数。
但您可以创建该类的对象并将其传递给jsonobject构造函数:
System.out.println ( new JSONObject(te.creatObjectWithDefaultValue("com.hexgen.ro.request.CreateRequisitionRO").newInstance() ).toString () );
这仅适用于具有无参数构造函数的类
答案 2 :(得分:1)
这很清楚。
The constructor JSONObject(Class) is undefined