给定一个Json,是否可以使用Jackson来解析消息的一部分?假设我感兴趣的数据埋藏在深层次的字段中,我根本不关心为每个类创建DTO类.
鉴于一个非常简化的场景,我想在不知道任何关于它之前的结构的情况下对Telephone类进行建模:
...{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}....
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用json-path和反序列化我感兴趣的部分.一些伪:
List<Telephone> phoneNrs = parse(".my.deep.structure.persons.phoneNumbers", List<Telephone.class>);
Run Code Online (Sandbox Code Playgroud)
ObjectMapper mapper = new ObjectMapper();
JsonNode json = mapper.readTree("... your JSON ...");
Run Code Online (Sandbox Code Playgroud)
JsonNode然后可以使用该对象进行调用get("my").get("deep").get("structure")以获取所需的节点。
到达该节点后,只需调用即可mapper.treeToValue(myDeepJsonNode, Telephone[].class)获得的数组Telephone。您也可以使用来获取列表TypeReference。
要深入了解,您JsonNode还可以使用findValue和findPath方法。
Javadoc:https: //fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/JsonNode.html
| 归档时间: |
|
| 查看次数: |
5190 次 |
| 最近记录: |