JsonNode主要是把json字符串转化为JsonNode对象,不用再创建json字符串一样的对象模型,就可以直接通过findvalue()之间获取你想要的字段了。
例如
String carJson = "{ \"name\" : \"jack\", \"age\" : 5 }";
ObjectMapper mapper=new ObjectMapper();
JsonNode node=mapper.readTree(carJson);
//获取到brand字段的值
String brand=node.findValue("name");
ObjectMapper: Jackson中的ObjectMapper
类(com.fasterxml.jackson.databind.ObjectMapper
)是使用Jackson解析JSON最简单的方法。
Jackson中的ObjectMapper
可以从字符串、流或文件解析JSON,并创建Java对象或对象图来表示已解析的JSON。将JSON解析为Java对象也称为从JSON反序列化Java对象。
Jackson ObjectMapper
也可以从Java对象创建JSON. 从Java对象生成JSON的过程也被称为序列化Java对象到JSON。
Jackson对象映射器(Object Mapper)
可以把JSON解析为用户自定义类对象, 或者解析为JSON内置的树模型的对象如readTree()方法。
1)ObjectMapper类中的特殊的readTree()方法,该方法返回JsonNode。 使用ObjectMapper readTree()方法将JSON解析为JsonNode。
@Getter
@Setter
@ToString
public class User implements Serializable {
private static final long serialVersionUID = -9180229310895087286L;
private String name;
private String sex;
private Integer age;
private String phoneNo;
private String address;
private String hobby;
public User(String name, String sex, Integer age, String phoneNo, String address, String hobby) {
this.name = name;
this.sex = sex;
this.age = age;
this.phoneNo = phoneNo;
this.address = address;
this.hobby = hobby;
}
public User(){}
}
public static ObjectMapper mapper=new ObjectMapper();
@Test
void ObjectMapper1() throws JsonProcessingException {
String carJson = "{ \"name\" : \"xiao\", \"age\" : 5 }";
System.out.println("转换为" + mapper.readTree(carJson));
JsonNode node = mapper.readTree(carJson);
node.findValue("brand");
System.out.println("转换为" + node.findValue("name"));
//将对象转换为jsons字符串
User user = new User();
user.setAddress("北京");
user.setAge(10);
user.setHobby("上网");
user.setName("笑笑");
user.setPhoneNo("11111");
user.setSex("女");
String str = mapper.writeValueAsString(user);
System.out.println("对象转换为字符串 " + str);
//将json字符串转换为对象
String str1 = "{ \"name\" : \"xiao\", \"age\" : 5 ,\"address\" : \"上海\",\"hobby\" : \"看书\",\"sex\" : \"男\",\"phoneNo\" :\"88888\"}";
User users = mapper.readValue(str1, User.class);
System.out.println("将json字符串转换为对象 " + users);
//将List转为json字符串
List<User> userList = new ArrayList<>();
userList.add(new User("小王", "女", 12, "1234567", "上海", "读书"));
userList.add(new User("小黑", "男", 22, "7654321", "南京", "读书"));
userList.add(new User("小丽", "女", 34, "1234567", "上海", "读书"));
String strList = mapper.writeValueAsString(userList);
System.out.println("将List转为json字符串 " + strList);
//将json字符串转为List
List<User> myUserList = mapper.readValue(strList, List.class);
System.out.println("将json字符串转为List " + myUserList);
//将Map转换为json字符串
HashMap myMap = new HashMap<String, User>();
myMap.put("第一个数据", new User("小王", "女", 12, "1234567", "上海", "读书"));
myMap.put("第二个数据", new User("小黑", "男", 22, "7654321", "南京", "读书"));
myMap.put("第三个数据", new User("小丽", "女", 34, "1234567", "上海", "读书"));
//将字符串转换Map
String strMap = mapper.writeValueAsString(myMap);
System.out.println("将Map转为json字符串 " + strMap);
try {
//将字符串转换为Map
HashMap<String, Object> hash = (HashMap<String, Object>) mapper.readValue(strMap, Map.class);
System.out.println("将json字符串转Map " + hash);
} catch (IOException e) {
e.printStackTrace();
}
}