Gson动态类型

时间:2014-02-13 17:12:50

标签: java json class gson

我正在尝试使用JSON在我的Java应用程序中反序列化gson个对象 。

但是,我无法想象如何动态应用类类型。

我在String

中有班级名称
User user = gson.fromJson(userJSON, User.class);

如何将String myClass作为班级类型?

2 个答案:

答案 0 :(得分:0)

Class<?> cls = Class.forName(className);

但是你的className应该是完全限定的 - 即com.mycompany.MyClass

答案 1 :(得分:0)

我相信上一个答案中的建议完全没问题。为了避免所有混淆并使其变得非常明显,这里是完整的代码:

package com.test;

import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;

public class TestGSON {
public static void main(String[] args) {
        Gson gson = new Gson();
        try{
            Object fromJson = gson.fromJson("{\"name\":\"Dharam\"}", Class.forName("com.test.MyClass"));
            if(fromJson instanceof MyClass){
                System.out.println(fromJson);
            }
        } catch (JsonSyntaxException | ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
    }
}

class MyClass {
private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@Override
public String toString() {
    return "MyClass [name=" + name + "]";
}

}

以上代码的输出:

MyClass [name=Dharam]