除了 ObjectMapper 外,如果不想创建和消息格式一样的对象模型,还可以使用 JsonNode 来访问 JSON 消息,下面是一个简单的例子。
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class Test{
public static void main(String[] args) throws Exception {
// 实例化 ObjectMapper 对象
ObjectMapper objectMapper = new ObjectMapper();
// json 消息
String json = "{\"firstname\":\"Bo\",\"lastname\":\"Shang\",\"age\":30}";
// 将 json 转成 JsonNode 对象
JsonNode rootNode = objectMapper.readTree(json);
// 得到节点值
JsonNode firstNameNode = rootNode.get("firstname");
System.out.println("firstname:" + firstNameNode.asText());
JsonNode ageNode = rootNode.get("age");
System.out.println("age:" + ageNode.asInt());
// 创建新节点
ObjectNode newNode = objectMapper.createObjectNode();
newNode.setAll((ObjectNode)rootNode);
newNode.put("hometown", "dalian");
// 将 JsonNode 对象转成 json
String newjson = objectMapper.writeValueAsString(newNode);
System.out.println(newjson);
}
}