2012-06-07 2 views
5

Учитывая следующий код:Простейшее Gson.fromJson пример не удается

final class retVal { int photo_id; } 
Gson gson = new Gson(); 
retVal ret = gson.fromJson("{\"photo_id\":\"383\"}", retVal.class); 

Я получаю ret набор для null.

Уверен, что я пропустил что-то очевидное, так как toJson с классом также не удается, хотя ручная конструкция через JsonObject работает.

ответ

5

Объявление об объявлении вашего класса retVal вне метода.

+0

Doh! Я знал, что это была глупая ошибка. Это работает, спасибо. Можете ли вы объяснить, почему это работает, пожалуйста? –

+3

GSON не позволяет десериализовать локальные классы. – Rajesh

1

Gson помогает вам сериализовывать объекты. Итак, сначала вам нужен объект. Основываясь на вашем подходе, вы хотите сделать что-то вроде

RetVal myRetVal = new RetVal(); 
Gson gson = new Gson(); 
String gsonString = gson.toJson(myRetVal); 

Чтобы получить объект обратно из строки:

Gson gson = new Gson(); 
RetVal myNewRetValObj = gson.fromJson(gsonString, RetVal.class); 
+0

Как я упоминал в вопросе, 'toJson' также терпит неудачу, и строка исходит из REST API. Код отлично работает со стандартным классом 'JSONObject', но я думал, что рефакторинг с' Gson' должен посмотреть, как он работает. –

+0

ОК, извините, я получил это неправильно. – stpn108

Смежные вопросы