ObjectMapper 操作Json对象
一、 根据Json 获取json中的某一个值
//实体类
public class Roots {
private int rid = 11;
private String name = "root";
private List<Items> items;
// Getter And Setter ....
}
public class Items {
private int id = 1;
private String name = "qq";
public Items(int id, String name) {
this.id = id;
this.name = name;
}
// Getter And Setter ...
测试代码
@Test
public void testObjectMapper() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
Roots roots = new Roots();
Items items1 = new Items(2,"2");
Items items2 = new Items(3,"3");
List<Items> list = new ArrayList<>();
list.add(items1); list.add(items2);
roots.setItems(list);
String json = JsonUtils.convertObjectToJson(roots);
System.out.println("经过处理后的Json对象:" + json);
JsonNode jsonNode = objectMapper.readTree(json);
Iterator<Map.Entry<String, JsonNode>> fields = jsonNode.fields();
while (fields.hasNext()){
Map.Entry<String, JsonNode> next = fields.next();
if (next.getKey().equals("items")) {
JsonNode value = next.getValue();
if (value.isArray()) {
System.out.println("获取JavaBean中name属性:" + value.get(0).get("name"));
}
}
}
}
***最终打印结果:
经过处理后的Json对象: {"rid":11,"name":"root","items":[{"id":2,"name":"2"},{"id":3,"name":"3"}]}
获取JavaBean中name属性: "2"
根据我自己的条件最终获取到了 数组中的 name属性的值***
二、 根据Map对象来将 map中的键值对 转换为JavaBean对象
Map<String,Object> mapBean = new HashMap<>();
mapBean.put("rowId","123455");
mapBean.put("useUnit","123455");
mapBean.put("makeUnit","213");
ObjectMapper objectMapper = new ObjectMapper();
ReqRepManage reqRepManage1 = objectMapper.convertValue(mapBean, ReqRepManage.class);
ReqRepManage reqRepManage = objectMapper.readValue(objectMapper.writeValueAsString(mapBean), ReqRepManage.class);
System.out.println(reqRepManage);
System.out.println(reqRepManage1);
输出
ReqRepManage(rowId=123455, useUnit=123455, makeUnit=213)
ReqRepManage(rowId=123455, useUnit=123455, makeUnit=213)