假设我有一个对象,并且我将它的所有属性存储为纯JSON。有没有办法存储.getClass()值,以便能够检索它并获取原始对象?
例如:
class foo
{
int test;
String classType;
}
//other class
foo demo = new foo();
demo.classType = demo.getClass().toString();
//I'm not entirely sure how to convert classType into a type I can use to parse back the data, like so:
foo demo2 = (demo.classType)jsonData;
由于这可能是一个广泛的问题,我会接受一个答案,它只是告诉我上面的内容是什么(如果你愿意的话,这是一个搜索词)。
答案 0 :(得分:3)
查看Class.forName()
,Class.getName()
和Class.newInstance()
。
代码可能类似于(未经测试):
String className = foo.geClass().getName();
Class<?> cls = Class.forName(className);
Object newFoo = cls.newInstance();
答案 1 :(得分:2)
您可以使用instanceof
运算符创建新的已创建对象并将其转换为foo
foo demo = new foo();
demo.classType = demo.getClass().toString();
foo demo2 = null;
OtherClass demo3 = null;
Class<?> clas=Class.forName(demo.getClass().getName());
Object obj= clas.newInstance();
if (obj instanceof foo) {
demo2=(foo)obj;
}else if (obj instanceof OtherClass) {
demo3=(OtherClass)obj;
}
注意:确保你使用多个else-if然后在子类之后在top和super类上添加子类条件,是的,你也需要添加try-catch块
答案 2 :(得分:1)
将Java对象转换为JSON
ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();
//Object to JSON in file
mapper.writeValue(new File("c:\\file.json"), obj);
//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);
将JSON转换为Java对象
ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";
//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);
//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);
//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);