I have the following class:
class IndexItem {
private String word;
private HashMap docs;
private Integer total;
public IndexItem(String word) {
this.total = 0;
this.docs = new HashMap();
this.word = word;
}
public IndexItem() {
this.total = 0;
this.docs = new HashMap();
this.word = "";
}
}
I also have the following JSON string encoded from one of this classes instances using GSON:
{"word":"refer","docs":{"c84ada58bb47e7ee8fab14d6d0ae1978.html":7,"7664010c28b7366813f52b30fd683f43.html":6,"a51ed147e16ea44244d7362367caeb4e.html":2},"total":15}
I tried running the following command to decode this string:
IndexItem item = new Gson().fromJson(jsonStr, IndexItem.class);
And I get the following error message when I try running it:
Exception in thread "main" com.google.gson.JsonParseException:
The JsonDeserializer MapTypeAdapter failed to deserialized
json object
{"c84ada58bb47e7ee8fab14d6d0ae1978.html":7,"7664010c28b7366813f52b30fd683f43.html":6,"a51ed147e16ea44244d7362367caeb4e.html":2}
given the type class java.util.HashMap
at
com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:63)
at
com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:88)
at
com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:116)
I am new to GSON and haven't dealt with Java in a long time. So my question is:
Is there a way to get GSON to decode the HashMap in my class? OR am I going about this all wrong and should take a different approach? If so where should I look?
解决方案
Sorry to answer my own question, but...
Make sure the white space is cleaned up around your JSON string before sending it to Gson.