Пользовательский класс JSON Decode с членом HashMap с использованием GSON в Java - PullRequest
3 голосов
/ 24 марта 2011

У меня есть следующий класс:

class IndexItem {
    private String word;
    private HashMap<String, Integer> docs;
    private Integer total;

    public IndexItem(String word) {
        this.total = 0;
        this.docs = new HashMap<String, Integer>();
        this.word = word;
    }

    public IndexItem() {
        this.total = 0;
        this.docs = new HashMap<String, Integer>();
        this.word = "";
    }
}

У меня также есть следующая строка JSON, закодированная из одного из экземпляров этого класса с использованием GSON:

{"word":"refer","docs":{"c84ada58bb47e7ee8fab14d6d0ae1978.html":7,"7664010c28b7366813f52b30fd683f43.html":6,"a51ed147e16ea44244d7362367caeb4e.html":2},"total":15}

Я попытался выполнить следующую командурасшифровать эту строку:

IndexItem item = new Gson().fromJson(jsonStr, IndexItem.class);

И я получаю следующее сообщение об ошибке при попытке его запустить:

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)

Я новичок в GSON и не имел дело с Java вмного времени.Поэтому мой вопрос:

Есть ли способ заставить GSON декодировать HashMap в моем классе?ИЛИ Я все это делаю неправильно и должен использовать другой подход?Если так, то где мне искать?

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Извините, что отвечаю на мой вопрос, но ...

Убедитесь, что пустое пространство очищено вокруг строки JSON перед отправкой в ​​Gson.

1 голос
/ 24 марта 2011

Какую версию Gson вы используете? Я пробовал это на 1,3, 1,4, 1,5 и 1,6, и он отлично работал

...