Tôi muốn tuần tự hóa lớp Ví dụ bên dưới thành JSON bằng GSON.Làm thế nào để tuần tự hóa Bản đồ Bản đồ với GSON?
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.LinkedHashMap;
public class Example
{
private LinkedHashMap<String,Object> General;
private static final String VERSION="Version";
private static final String RANGE="Range";
private static final String START_TIME="Start_Time";
private static final String END_TIME="End_Time";
public Example() {
General = new LinkedHashMap<String,Object>();
General.put(VERSION, "0.1");
LinkedHashMap<String,String> Range = new LinkedHashMap<String, String>();
Range.put(START_TIME, "now");
Range.put(END_TIME, "never");
General.put(RANGE, Range);
}
public String toJSON() {
Gson gson = new GsonBuilder().serializeNulls().create();
return gson.toJson(this);
}
}
tôi mong đợi để có được kết quả như sau:
{"General":{"Version":"0.1","Range":{"Start_Time":"now","End_Time":"never"}}}
Nhưng gọi hàm toJSON()
lợi nhuận
{"General":{"Version":"0.1","Range":{}}}
Dường như GSON không thể serialize Bản đồ Range
bên trong Map General
. Đây có phải là một hạn chế của GSON hay tôi đang làm điều gì sai ở đây?
Nếu câu trả lời khác là Trình nối tiếp bản đồ mặc định và chính xác sẽ không xử lý các bản đồ lồng nhau, tôi sẽ gửi một báo cáo lỗi cho nhóm GSON. Nó có vẻ như thực sự xấu mặc định với tôi; ít nhất nó phải ném một ngoại lệ thay vì lặng lẽ nuốt nội dung. – StaxMan
+1 @StaxMan có vẻ như vậy. Tôi đã thấy điều này trước đó, đã đưa ra một số công việc xung quanh. Nếu có một số cách để làm điều này, nó có giá trị tài liệu. – Nishant