Есть способ узнать, какой тип json представлен?

допустим, у меня есть два объекта: Person и ReqSingUp, а ReqSingUp содержит Person.

Теперь, если я попытаюсь:

Person p=new Person("dan","lala");
ReqSingUp reqSingUp=new ReqSingUp(p);
String s = gson.toJson(reqSingUp,ReqSingUp.class);
Object o = gson.fromJson(s, Object.class);

if (o instanceof ReqSingUp) {
    System.out.println("it's ReqSingUp");
}
if (o instanceof Person ) {
    System.out.println("it's person");
}

он не удовлетворяет ни одному условию (не instanceof ReqSingUp и не instanceof Person ).

Есть ли способ узнать, какой это тип?

Заранее спасибо.


person Idan    schedule 30.04.2012    source источник
comment
Нет. Я не думаю, что есть способ. Может быть, одним из обходных путей является использование одного из тегов json для представления типа объекта.   -  person kosa    schedule 30.04.2012
comment
Вы смотрели руководство? Это может помочь: sites.google.com/site/gson/   -  person TJR    schedule 30.04.2012
comment
Разве это не вариант этого вопроса? stackoverflow.com/questions/3629596/   -  person John Munsch    schedule 30.04.2012


Ответы (1)


Нет, нет никакого способа узнать это напрямую.

Это связано с тем, что информация, содержащаяся в файле JSON, не содержит непосредственно какой-либо информации о типе объекта, который сериализуется в нем. Вот почему вы обычно предоставляете класс при чтении файла JSON, как в

fromJSon(myObject, MyClass.class)

Это действительно создает проблему даже при чтении набора произвольных типов или универсальных объектов.

person Jack    schedule 30.04.2012