Я использую Gson внутри своих проектов для десериализации JSON-строк для Java-объектов. Если я сделаю запрос, я ожидаю, что на сервере будет четко определен ответ. Сервер либо вернет корректный ответ, который я ожидаю, либо он вернет мне (также определенный) объект ошибки.
Чтобы все было ясно: предположим, что у меня есть простой объект:
class Dummy{
private String foo;
private int bar;
}
и объект Error следующим образом:
class ErrorHolder{
private RequestError error;
}
class RequestError{
private String publicMsg;
private String msg;
}
Если я получаю сервер-ответ вроде
{"foo":"Hello World", "bar":3 }
все работает так, как ожидалось.
Но если ответ подобен этому
{"error":{"publicMsg":"Something bad happened", msg:"you forgot requesting some parameter"}}
Я получу вид объекта Dummy
, где foo
есть null
и bar
равно 0! В документации Gson (fromJson) четко указано, что:
броски JsonSyntaxException - если json не является допустимым представлением для объект типа classOfT
поэтому я ожидал получить исключение JsonSyntaxException, если попытаюсь проанализировать второй ответ вроде этого:
Dummy dummy = Gson.fromJson(secondResponse, Dummy.class);
поскольку Json не представляет объект Dummy, а объект ErrorHolder.
Итак, мой вопрос: есть ли способ, который Gson каким-то образом обнаруживает, и бросает мне исключение?