Jackson 常用方法总结

前言

最近风闻 FastJSON 各种安全漏洞,果断更换以性能和灵活性著称的 Jackson。

正文

ObjectMapper mapper = new ObjectMapper(); 
String json = mapper.writeValueAsString(object);
JsonNode jsonNode = mapper.readTree(json);
JsonNode node = objectMapper.valueToTree(map);
JsonNode node = mapper.convertValue(object, JsonNode.class);
JsonNode jsonNode =  objectMapper.readTree(json);
for (JsonNode node : jsonNode) {
	log.info(node.toString());
}
JsonNode jsonNode =  objectMapper.readTree(json);
boolean bool = jsonNode.isArray();
ArrayNode arrayNode = jsonNode.deepCopy();
// 先转ObjectNode,再设置
ObjectNode objectNode = jsonNode.deepCopy();
objectNode.put("a", "b");
jsonNode = objectNode;
JavaType javaType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, YourBean.class);
List<YourBean> list = objectMapper.readValue(json, javaType);
  1. 如果 字段本身的值为 text 类型 的, 那么用 asText() 和 textValue() 获取的结果是一致的;
  2. 如果 字段本身的值不是 text 类型的, 比如上面的 age 应该是数字类型的, 那么 asText() 会将最后的结果 16 转换为 text 然后返回, 而 textValue() 则取不到值会返回空 null, 此时需要用 intValue() /longValue()/数值类型的取值方法才能取到值;
  3. 同理 如果字段本身不是 int 整数型, 那么 asInt() 会将获取的结果尝试转化为 int 然后返回, 而 intValue() 会返回空 null;
  • Jackson
    1 引用
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    43 引用 • 179 回帖

赞助商 我要投放

回帖
请输入回帖内容 ...