如何使用 Java 中的 Jackson 对象模型映射 JSON 数据?
javajsonobject oriented programmingprogramming
ObjectMapper 类提供在 Java 对象和匹配的 JSON 构造之间进行转换的功能。我们可以使用 树状 数据结构将由 对象模型 表示的 JSON 数据映射到特定的 Java 对象,该数据结构读取并将整个 JSON 内容存储在内存中。第一步,将 JSON 数据读入 JsonNode 对象 ,然后通过调用 ObjectMapper 类的 treeToValue() 方法将其映射到另一个实例。
语法
public <T> T treeToValue(TreeNode n, Class<T> valueType) throws JsonProcessingException
示例
import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; public class JsonTreeModelDemo { public static void main(String[] args) throws JsonProcessingException, IOException { String jsonString = "{\"id\":\"102\", \"name\":\"Raja Ramesh\", \"address\":[{\"area\":\"Madhapur\", \"city\":\"Hyderabad\"}]}"; ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(jsonString); User user = objectMapper.treeToValue(jsonNode, User.class); System.out.println(user); } } // User class class User { private int id; private String name; private Address[] address; 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; } public Address[] getAddress() { return address; } public void setAddress(Address[] address) { this.address = address; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); sb.append(id).append(","); sb.append(name).append(","); for(Address address1 : address) { sb.append(address1).append(","); } sb.append("}"); return sb.toString(); } } // Address class class Address { private String area; private String city; public String getArea() { return area; } public void setArea(String area) { this.area = area; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); sb.append(area).append(","); sb.append(city); sb.append("}"); return sb.toString(); } }
输出
{102,Raja Ramesh,{Madhapur,Hyderabad},}