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 数据绑定

JSONJAVA
objectLinkedHashMap<String,Object>
arrayArrayList< Object>
stringString
complete numberInteger, Long or BigInteger
fractional numberDouble / BigDecimal
true/falseBoolean
nullnull

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
//一个一个(键/值)读,数组也一样。
       }