GSON использует MapTypeAdapterFactory
для десериализации карты.Ниже приведена краткая выдержка из ее исходного кода, в которой новая запись помещается в карту:
V replaced = map.put(key, value);
if (replaced != null) {
throw new JsonSyntaxException("duplicate key: " + key);
}
Зная, что существует хотя бы один способ обойти это строгое поведение: создайте собственную карту, которая переопределяет методput(..)
для возврата всегда null, например:
public class DuploMap extends HashMap<String, String>{
@Override
public String put(String key, String value) {
super.put(key, value);
return null;
}
}
, затем десертилизация к нему, например:
gson.fromJson(JSON, DuploMap.class);
не сгенерирует это исключение.