Gson bỏ qua các mục bản đồ với value = null


132
Gson gson = new Gson();

Map<String,Object> map = new HashMap<String, Object>();
map.put("a", 1);
map.put("b", null);

System.out.println(gson.toJson(map)); //prints {"a":1}

Làm thế nào để tôi có được nó để bao gồm tất cả các mục?

Câu trả lời:


299

Xem Hướng dẫn sử dụng Gson - Hỗ trợ đối tượng Null :

Hành vi mặc định được triển khai trong Gson là các trường đối tượng null bị bỏ qua. Điều này cho phép định dạng đầu ra nhỏ gọn hơn; tuy nhiên, máy khách phải xác định một giá trị mặc định cho các trường này khi định dạng JSON được chuyển đổi trở lại thành dạng Java của nó.

Đây là cách bạn sẽ cấu hình một thể hiện Gson để xuất null:

Gson gson = new GsonBuilder().serializeNulls().create();

10
Hướng dẫn nên được tối ưu hóa hơn cho tìm kiếm. Tôi sẽ không đọc mọi thứ khi tôi sử dụng một lượng nhỏ chiến công. Đây là kết quả đầu tiên trên google. Đã sửa lỗi của tôi.
Mathijs Segers

1
@MathijsSegers Một số thư viện tuyệt vời không có tài liệu. Có quá nhiều rắc rối khi đi qua mã nguồn của họ (một lần nữa với rất nhiều mẫu xây dựng và tất cả).
Pinkpanther

13
@MathijsSegers Và đây là nét đẹp của SO và Google. Tôi có thể google "gson bỏ qua null" và tìm câu trả lời này trong 3 giây thay vì phải tìm hướng dẫn và câu trả lời trong đó.
joshden

2
Làm thế nào để chỉ bao gồm một trường NULL không phải tất cả các trường NULL trong lớp? Có chú thích nào tôi có thể thêm ở trên trường bắt buộc không?
Salam El-Banna

Giải pháp này có vẻ hợp lý và tôi đã mong đợi nó hoạt động! Nhưng nó không! có ý kiến ​​gì không
Arman Ramezanzadeh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.