EASY VERSIONChuyển đổi json để đối tượng Map.Entry với Gson
Nếu tôi hỏi Gson để chuyển đổi một số json hợp lệ để myMap nó không có vấn đề làm việc đó
public class MyMap{
Map<Long,String> content;
}
MyMap myMap = gson.fromJson(json, new TypeToken<MyMap>() {}.getType());
VERSION HARD:
thế nào sao tôi có được Gson để làm như sau?
public class MyDS{
Map<Map.Entry<Long,String>,Map<Long,String>> content;
}
MyDS myDS = gson.fromJson(json, new TypeToken<MyDS>() {}.getType());
Ví dụ json nếu bạn thực sự cần. hơn
"content": {
"[1, dog]": {
"1": "max",
"2": "pi",
"3": "robot",
"4": "catcher",
"5": "reaper"
},
"[2, cat]": {
"6": "black",
"7": "white",
"8": "meow",
"9": "mice",
"10": "rat"
},
"[3, rabbit]": {
"16": "bunny",
"17": "ears",
"28": "burgerbun",
"39": "alice",
"50": "tweak"
}
}
ghi chú
Đối với biện pháp tốt, tôi cố gắng chạy một thử nghiệm đơn vị nơi mà tất cả tôi làm là cố gắng đọc các json với Gson, và tôi nhận được dấu vết lỗi sau:
at sun.misc.Unsafe.allocateInstance(Native method)
java.lang.reflect.Method.invoke!(Native method)
com.google.gson.internal.UnsafeAllocator$1.newInstance(UnsafeAllocator.java:48)
com.google.gson.internal.ConstructorConstructor$14.construct(ConstructorConstructor.java:223)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:207)
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:186)
com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
com.google.gson.Gson.fromJson(Gson.java:861)
com.google.gson.Gson.fromJson(Gson.java:826)
com.google.gson.Gson.fromJson(Gson.java:775)
Nó không quan trọng nếu các phím có dạng "[3, rabbit]"
cho "{3, rabbit}"
Bạn có thể trình bày mẫu json cho việc này không? – notionquest
Sửa báo giá của bạn. – shmosel
Các trích dẫn chỉ giống như vậy bởi vì tôi dán vào một textEditor. Nhưng họ ổn. Giống như tôi nói, nó hoạt động cho đến khi tôi cần một Entry cho khóa. –