2012-06-07 29 views
5

Với đoạn mã sau:đơn giản Gson.fromJson dụ thất bại

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

tôi nhận được ret thiết lập để null.

Tôi chắc chắn mình đã bỏ lỡ điều gì đó rõ ràng, vì toJson với một lớp cũng không thành công, mặc dù việc xây dựng bằng tay thông qua JsonObject hoạt động.

Trả lời

5

Khai báo lớp học của bạn retVal bên ngoài phương pháp.

+0

Doh! Tôi biết đó là một sai lầm ngu ngốc. Điều đó hoạt động, cảm ơn. Bạn có thể giải thích * tại sao * nó hoạt động, xin vui lòng? –

+3

GSON không cho phép deserialization của các lớp học địa phương. – Rajesh

1

Gson giúp bạn sắp xếp các đối tượng. Vì vậy, bạn cần một đối tượng đầu tiên. Dựa trên cách tiếp cận của bạn, bạn muốn làm một cái gì đó giống như

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

Để lấy đối tượng trở lại từ chuỗi:

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

Như tôi đã đề cập trong câu hỏi, 'toJson' cũng không thành công, và chuỗi này đến từ một API REST. Mã hoạt động tốt với lớp 'JSONObject' chuẩn, nhưng tôi nghĩ tôi sẽ cấu trúc lại với' Gson' để xem nó hoạt động như thế nào. –

+0

ok, xin lỗi, tôi hiểu sai. – stpn108

Các vấn đề liên quan