gson là một thư viện tuyệt vời - nó hoạt động tốt. Đôi khi tôi có các yêu cầu tùy chỉnh, và có thể tạo và đăng ký TypeAdapters và TypeAdaptorFactories - và nó cũng hoạt động tốt. Tuy nhiên, điều làm tôi bối rối là làm thế nào để ủy quyền trở lại tuần tự hóa json ... Hầu hết thời gian tôi cần điều này cho các bộ sưu tập, nhưng để minh họa cho điểm - giả sử tôi có một cặp, trong đó gson rõ ràng sẽ sắp xếp một cách vui vẻ, nhưng vì lý do nào đó, tôi cần serializer tùy chỉnh của riêng mình. Vâng ... nếu cặp của tôi làthêm đối tượng bằng cách sử dụng typeadapter tùy chỉnh, jsonwriter trong gson
public class Pair
{
public final Object First;
public final Object Second;
public Pair(Object first, Object second) {this.first = first; this.second = second};
}
Nếu tôi đã viết một bộ chuyển đổi loại hình cho điều này - bạn sẽ muốn các ghi chức năng để trông giống như:
public void write(JsonWriter out, Pair pair)
{
out.beginObject();
out.name("first");
out.value(pair.first); // can't do this
out.name("second");
out.value(pair.second); // or this
out.endObject();
}
Vì vậy, bạn sẽ nhìn thấy vấn đề - Tôi có không có ý tưởng loại thứ nhất và thứ hai cũng như cách chúng được tuần tự hóa. Tôi có thể sử dụng gson.toJson để serialize đầu tiên và thứ hai - nhưng nếu tôi thêm chúng như là một chuỗi để các nhà văn, họ sẽ được thoát. Có một hàm gson.tojson có giá trị và một người viết - nhưng nó cũng có một kiểu gõ - mà tôi không có. Tôi sắp có ấn tượng với ý tôi là có một loại adapter khác từ đâu đó - nhưng khi tôi chỉ có một danh sách các vật thể ... tôi lấy nó ở đâu? thế nào để tôi nhận được bộ chuyển đổi cho đối tượng?
Tôi hơi bối rối? Chắc chắn đây là trường hợp sử dụng phổ biến nhất? Hầu hết các serializers tùy chỉnh sẽ cho một danh sách lạ của T hoặc cây T hoặc một cái gì đó, và bạn thực sự không biết những gì có trong danh sách, ngoài ra nó thừa kế từ T ... vì vậy bạn cần để có thể ủy nhiệm lại serialization theo một cách nào đó?
Dù sao - nếu ai đó có thể cho tôi biết cách viết hàm trên, tôi thực sự sẽ đánh giá cao nó!
cảm ơn bạn - sẽ cho phép điều đó –