鍍金池/ 教程/ Java/ Jackson流式API
Jackson JsonGenerator類
Jackson樹模型
Jackson環(huán)境安裝設(shè)置
Jackson教程
Jackson數(shù)據(jù)綁定
Jackson第一個程序
Jackson JsonParser類
Jackson ObjectMapper類
Jackson流式API
Jackson數(shù)據(jù)綁定泛型
Jackson對象序列化
Jackson全數(shù)據(jù)綁定

Jackson流式API

流式API讀取和寫入JSON內(nèi)容離散事件。 JsonParser讀取數(shù)據(jù),而JsonGenerator寫入數(shù)據(jù)。它是三者中最有效的方法,是最低開銷和最快的讀/寫操作。它類似于XML的Stax解析器。

在本文中,我們將展示的使用Jackson的流式API 讀寫JSON數(shù)據(jù)。流式API工作使用JSON為每一個細節(jié)的都是要小心處理。下面的例子將使用兩個類:

使用JsonGenerator寫入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<