Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
- 创建一个ObjectMapper,可复用,通过它进行转换。
ObjectMapper mapper = new ObjectMapper();
- 反序列化JSON到对象
Student stu=mapper.readValue(jsonString,Student.class);
- 序列化对象为JSON
String s=mapper.writeValueAsString(stu);
JSON to java 数据绑定
JSON | JAVA |
---|---|
object | LinkedHashMap<String,Object> |
array | ArrayList< Object> |
string | String |
complete number | Integer, Long or BigInteger |
fractional number | Double / BigDecimal |
true/false | Boolean |
null | null |
JsonNode
ObjectMapper提供一个指针树的根节点在读取JSON之后。根节点可用于遍历完全树。
String 到 JsonNode(mapper.readTree)
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
JsonNode rootNode = mapper.readTree(jsonString);//根节点
JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.getTextValue());//“Mahesh Kumar”
JsonNode 到 Object(mapper.treeToValue)
rootNode = mapper.readTree(new File("student.json"));
Student student = mapper.treeToValue(rootNode, Student.class);
JsonGenerato 与 JsonParser
JsonGenerato 流式写入JSON字符串
JsonFactory jasonFactory = new JsonFactory();//工厂
JsonGenerator jsonGenerator= jasonFactory.createGenerator(new FileOutputStream("src/test/java//test.txt"));
jsonGenerator.writeStartObject();//开始写对象
jsonGenerator.writeStringField("name", "Mahesh Kumar");
jsonGenerator.writeStartArray();//开始写数组
jsonGenerator.writeNumber(100);
jsonGenerator.writeNumber(90);
jsonGenerator.writeEndArray();//结束写数组
jsonGenerator.writeEndObject();//结束写对象
jsonGenerator.close();
JsonParser 流式读JSON字符串
JsonFactory jasonFactory = new JsonFactory();//工厂
JsonParser jsonParser = jasonFactory.createParser(new FileInputStream("src/test/java/cn/lileli/repair/intetests/test.txt"));
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
System.out.println(jsonParser.getCurrentName());//name
jsonParser.nextToken();//下一个令牌
System.out.println(jsonParser.getText());//Mahesh Kumar
//getCurrentName等于getText
//一个一个(键/值)读,数组也一样。
}