流式API讀取和寫入JSON內(nèi)容離散事件。 JsonParser讀取數(shù)據(jù),而JsonGenerator寫入數(shù)據(jù)。它是三者中最有效的方法,是最低開銷和最快的讀/寫操作。它類似于XML的Stax解析器。
在本文中,我們將展示的使用Jackson的流式API 讀寫JSON數(shù)據(jù)。流式API工作使用JSON為每一個細(xì)節(jié)的都是要小心處理。下面的例子將使用兩個類:
JsonGenerator - 寫入JSON字符串。
JsonParser - 解析JSON字符串。
使用JsonGenerator是非常簡單的。首先使用JsonFactory.createJsonGenerator()方法創(chuàng)建一個JsonGenerator,并用write***()方法來寫每一個JSON值。
JsonFactory jasonFactory = new JsonFactory(); JsonGenerator jsonGenerator = jasonFactory.createJsonGenerator(new File( "student.json"), JsonEncoding.UTF8); // { jsonGenerator.writeStartObject(); // "name" : "Mahesh Kumar" jsonGenerator.writeStringField("name", "Mahesh Kumar");
讓我們來看看JsonGenerator操作。創(chuàng)建一個名為JacksonTester的Java類文件在目錄 C:\>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.File; import java.io.IOException; import java.util.Map; import org.codehaus.jackson.JsonEncoding; import org.codehaus.jackson.JsonFactory; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JacksonTester { public static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { JsonFactory jasonFactory = new JsonFactory(); JsonGenerator jsonGenerator = jasonFactory.createJsonGenerator(new File( "student.json"), JsonEncoding.UTF8); // { jsonGenerator.writeStartObject(); // "name" : "Mahesh Kumar" jsonGenerator.writeStringField("name", "Mahesh Kumar"); // "age" : 21 jsonGenerator.writeNumberField("age", 21); // "verified" : false jsonGenerator.writeBooleanField("verified", false); // "marks" : [100, 90, 85] jsonGenerator.writeFieldName("marks"); // [ jsonGenerator.writeStartArray(); // 100, 90, 85 jsonGenerator.writeNumber(100); jsonGenerator.writeNumber(90); jsonGenerator.writeNumber(85); // ] jsonGenerator.writeEndArray(); // } jsonGenerator.writeEndObject(); jsonGenerator.close(); //result student.json //{ // "name":"Mahesh Kumar", // "age":21, // "verified":false, // "marks":[100,90,85] //} ObjectMapper mapper = new ObjectMapper(); Map<String,Object> dataMap = mapper.readValue(new File("student.json"), Map.class); System.out.println(dataMap.get("name")); System.out.println(dataMap.get<