【ObjectMapper的依赖】
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.4</version>
</dependency>
【待处理的json文】
{
"name": "Moft",
"count": 100,
"nicknames": [
"Microsoft",
"moft",
"Mft",
"Bill's company"
],
"emps": [
{
"id": 1,
"name": "Andy"
},
{
"id": 2,
"name": "Bill"
},
{
"id": 3,
"name": "Cindy"
},
{
"id": 4,
"name": "Dougalas"
}
]
}
【读取和处理程序】
RestTemplate restTemplate = new RestTemplate();
String json = restTemplate.getForObject("http://localhost:8080/showWelcome/",String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(json);
JsonNode nickNode=root.get("nicknames");
// json转数组
String json1=nickNode.toString();
System.out.println(json1);
List<String> ls1 = mapper.readValue(json1, List.class);
for(String nick:ls1){
System.out.println(nick);
}
JsonNode empsNode=root.get("emps");
// json转对象数组
String json2=empsNode.toString();
System.out.println(json2);
List<Employee> ls2 = mapper.readValue(json2, new TypeReference<List<Employee>>(){});
for(Employee employee:ls2){
System.out.println(employee);
}
【Employee类】
package com.hy;
public class Employee {
private int id;
private String name;
public Employee() {
this(-1, "");
}
public Employee(int id,String name) {
this.id=id;
this.name=name;
}
public String toString(){
return "EMP:"+id+"_"+name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
【输出】
["Microsoft","moft","Mft","Bill's company"]
Microsoft
moft
Mft
Bill's company
[{"id":1,"name":"Andy"},{"id":2,"name":"Bill"},{"id":3,"name":"Cindy"},{"id":4,"name":"Dougalas"}]
EMP:1_Andy
EMP:2_Bill
EMP:3_Cindy
EMP:4_Dougalas
END