JSON数据看起来就像一棵树,也可以用类似于XML的解析方法来解析。将上篇文章的Demo改为:
package com.hankcs; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.node.ObjectNode; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) throws IOException { ObjectMapper m = new ObjectMapper(); // can either use mapper.readTree(source), or mapper.readValue(source, JsonNode.class); JsonNode rootNode = m.readTree(new File("user.json")); // ensure that "last name" isn't "Xmler"; if is, change to "Jsoner" JsonNode nameNode = rootNode.path("name"); String lastName = nameNode.path("last").getTextValue(); System.out.println(lastName); if ("xmler".equalsIgnoreCase(lastName)) { ((ObjectNode) nameNode).put("last", "Jsoner"); } // and write it out: m.writeValue(new File("user-modified.json"), rootNode); } }
项目源码:http://pan.baidu.com/s/1iqFYe
参考:http://wiki.fasterxml.com/JacksonInFiveMinutes#Full_Data_Binding_.28POJO.29_Example
知识共享署名-非商业性使用-相同方式共享:码农场 » 五分钟Jackson入门(三) JSON数据类XML转换(附项目源码)