我试图解决反序列化问题,但现在我想请任何人帮助我。
我有一个典型的Yaml列表:
service:
env:
- name: WAN_PORT
value: "80"
- name: LAN_PORT
value: "8080"
- name: SITE_URL
value: "http://google.com"
我需要以下对象的这些信息:
public class Env {
private String name;
private String value;
}
到目前为止,我创建了一个简单的ObjectMapper,并使用该对象的'readValue'成员来处理JsonNode。
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
jsonNode = jsonNode.get("service").get("env");
TypeReference<Map<String,Env>> typeRef = new TypeReference<>() {};
Map<String,Env> envMap = yamlFileMapper.getObjectMapper().readValue(jsonNode.toString(), typeRef);
我过去和Jackson一起工作过,它简单地和简单的对象或列表一起工作。现在我收集所有env-pair到object并存储到Collection中,如:
List<Env> listOfEnv = ....
谢谢!
1条答案
按热度按时间2ul0zpep1#
正如jackson-databind github项目页面所建议的,不需要创建一个新的
TypeReference
来处理列表,你可以直接在treeToValue
方法中使用List
: