2012-10-23 24 views
25

Tôi không thể tìm thấy một cách đơn giản để thêm trường tùy chỉnh trong quá trình tuần tự hóa trong Gson và tôi hy vọng một người khác có thể trợ giúp.Gson thêm trường trong quá trình tuần tự

Dưới đây là một lớp học mẫu để hiển thị vấn đề của tôi:

public class A { 
    String id; 
    String name; 
    ... 
} 

Khi tôi serialize lớp AI muốn trả lại một cái gì đó như:

{ "id":"123", "name":"John Doe", "url_to_user":"http://www.example.com/123" } 

nơi url_to_user không được lưu trữ trong trường hợp của tôi về lớp A, nhưng có thể được tạo ra với dữ liệu trong cá thể của lớp A.

Có cách nào đơn giản để làm việc này không? Tôi muốn tránh viết toàn bộ bộ nối tiếp chỉ để thêm một trường.

Trả lời

44

Sử dụng Gson.toJsonTree để nhận số JsonElement, bạn có thể tương tác động.

A a = getYourAInstanceHere(); 
Gson gson = new Gson(); 
JsonElement jsonElement = gson.toJsonTree(a); 
jsonElement.getAsJsonObject().addProperty("url_to_user", url); 
return gson.toJson(jsonElement); 
+0

Cảm ơn. Đủ đơn giản và hoạt động cho những gì tôi đang làm. – joncalhoun

+0

Đơn giản ... hy vọng sẽ có một cách đơn giản hơn, ví dụ: một phương pháp trên đối tượng ... – Armand

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