static class Person {
String name;
ArrayList<Person> friends;
public Person(String name, ArrayList<Person> friends) {
this.name = name;
this.friends = friends;
}
}
static class Converter {
String raw;
Gson gson;
public Converter() {
this.gson = new Gson();
}
public <T> T get( Class<T> cls ) {
return gson.fromJson( raw, cls );
}
public void set( String json ) {
this.raw = json;
}
}
public static void main(String[] args) {
Gson gson = new Gson();
ArrayList<Person> friends = new ArrayList<>();
friends.add(new Person( "craig", new ArrayList<Person>() ));
friends.add(new Person( "andrew", new ArrayList<Person>() ));
Person alex = new Person(
"alex",
friends
);
String rawJson = gson.toJson( alex );
Converter c = new Converter();
c.set( rawJson );
Person p = c.get( Person.class ); //This gives an incompatible type error
}
我有一个类转换器,我试图从中返回任何对象。我的想法是你给它原始的json,当你从它获得(Person.class)时,你将得到一个Person对象。
这是问题的一个基本示例,但为什么get()方法只返回一个Object而不是Person对象?
答案 0 :(得分:0)
您肯定需要instanceof
支票。
我没有使用GSON,但是org.jsons get方法总是返回一个Object。
还有其他方法,例如getBoolean()
,getInteger()
等。
因此,您必须使用此方法获取显式数据类型,或者使用instanceof
进行检查并投射它。