将字符串值转换为类型

时间:2016-11-11 11:26:11

标签: java json parsing generics gson

假设我有一个对象,并且我将它的所有属性存储为纯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;

由于这可能是一个广泛的问题,我会接受一个答案,它只是告诉我上面的内容是什么(如果你愿意的话,这是一个搜索词)。

3 个答案:

答案 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);