我有以下代码,它从一个list返回一个strings
public static List<String> asList(final JsonNode jsonNode) {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(jsonNode, ArrayList.class);
}示例用法:
List<String> identities = Utils.asList(jsonNode);我希望将此更改为使用Generics,以确保JsonNode包含任何类型的列表也可以转换和返回。
我有以下实现(不是使用Jackson ObjectMapper),但这是最佳解决方案吗?
public static <T> List<T> asList(final JsonNode jsonNode) {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(jsonNode, ArrayList.class);
}发布于 2019-12-14 16:02:20
您可以创建接受JSON字符串和TypeReference的util方法。
public <T> T jsonMapper(String json, TypeReference<T> typeReference)
throws JsonParseException, JsonMappingException, IOException {
return objectMapper.readValue(json, typeReference);
}例如,可以调用此方法将json字符串转换为List或单个Object。
List<String> lOfStr = jsonMapper(json,new TypeReference<List<String>>() { });
Employee emp = jsonMapper(json,new TypeReference<Employee>() { });发布于 2019-12-14 15:49:58
要避免未检查的赋值,可以使用TypeReference
public static <T> List<T> asList(final JsonNode jsonNode) {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(jsonNode, new TypeReference<List<T>>() {});
}https://stackoverflow.com/questions/59336513
复制相似问题