J'ai essayé d'analyser JSON en utilisant customDeserilizer pour la nidification ObjetFail à Parse dynamique KeyValue paire JSON aide personnalisée JsonDeserializer GSON
Voici mon désérialiseur:
class MapDeserializer implements JsonDeserializer<Map<String, String>> {
public Map<String, String> deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context){
try {
Map<String, String> result = new HashMap<String, String>();
JsonObject object = json.getAsJsonObject();
for (Map.Entry<String, JsonElement> entry : object.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().getAsString();
result.put(key, value);
}
// }
return result;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
}
et je suis en utilisant la ligne de code suivante enregistrer ce désérialiseur
Gson gson = new GsonBuilder().registerTypeHierarchyAdapter(TaggedActorMap.class, new MapDeserializer()).create();
sActivityBean = gson.fromJson(result,
SimilarActivityBean.class);
Voici ma classe POJO
public class TaggedActorMap implements Serializable {
private String key;
private String value;
}
J'obtiens l'erreur suivante
java.lang.IllegalArgumentException: invalid value for field
at java.lang.reflect.Field.setField(Native Method)
at java.lang.reflect.Field.set(Field.java:588)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1
.read(ReflectiveTypeAdapterFactory.java:119)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter
.read(ReflectiveTypeAdapterFactory.java:217)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.
read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.
read(CollectionTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.
read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.
read(ReflectiveTypeAdapterFactory.java:117)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.
read(ReflectiveTypeAdapterFactory.java:217)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.
read(ReflectiveTypeAdapterFactory.java:117)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter
.read(ReflectiveTypeAdapterFactory.java:217)
at com.google.gson.Gson.fromJson(Gson.java:814)
at com.google.gson.Gson.fromJson(Gson.java:779)
at com.google.gson.Gson.fromJson(Gson.java:728)
at com.google.gson.Gson.fromJson(Gson.java:700)
Un stacktrace complet serait utile – marthursson
posted piletrace @marthursson –