#java #json #string #gson
#java #json #строка #gson
Вопрос:
У меня есть строка JSON, которая анализируется с использованием библиотеки GSON в Map следующим образом:
static Type type = new TypeToken<Map<String, String>>() {}.getType();
// note the trailing/leading white spaces
String data = "{'employee.name':'Bob ','employee.country':' Spain '}";
Map<String, String> parsedData = gson.fromJson(data, type);
Проблема, с которой я сталкиваюсь, заключается в том, что мои значения атрибутов JSON имеют конечные / начальные пробелы, которые необходимо обрезать. В идеале я хочу, чтобы это было сделано, когда данные анализируются на карту с использованием GSON. Возможно ли что-то подобное?
Комментарии:
1. Почему бы и нет? …
for (String key : parsedData.keySet()) parsedData.put(key, parsedData.get(key).trim());
По общему признанию, это делается после синтаксического анализа, который отличается от запроса, который вы опубликовали в своем вопросе.
Ответ №1:
Вам необходимо реализовать пользовательский com.google.gson.JsonDeserializer
десериализатор, который обрезает String
значения:
class StringTrimJsonDeserializer implements JsonDeserializer<String> {
@Override
public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
final String value = json.getAsString();
return value == null ? null : value.trim();
}
}
И вам нужно ее зарегистрировать:
Gson gson = new GsonBuilder()
.registerTypeAdapter(String.class, new StringTrimJsonDeserializer())
.create();