GSON -从JSON反序列化期间修剪字符串

camsedfj  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(205)

我有一个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将数据解析到Map时进行修剪。这样的操作可行吗?

nxagd54h

nxagd54h1#

您需要实现自定义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();

相关问题