介绍JsonGenerator之前,首先简要说下Jackson。
Jackson常用的类:
- JsonFactory:这个类是Jackson主要的工厂方法,主要用于配置和构建解析器(JsonParser)和生成器(如JsonGenerator),这个工厂实例是线程安全的,如果有配置的话,可以重复使用。
- JsonGenerator:这个类主要是用来生成Json格式的内容的,我们可以使用JsonFactory 的方法生成一个实例。
- JsonParser:这个主要是用来读取Json格式的内容,并且完成解析操作的,我们可以使用JsonFactory的方法生成一个实例。
- ObjectMapper:这个类提供了Java对象和Json之间的转化,主要通过JsonParser和JsonGenerator实例来完成实际的对Json数据的读写操作。
JsonGenerator类
JsonGenerator是定义公共API编写的Json内容的基类,使用JsonFactory实例的工厂方法创建实例。
JsonGenerator的使用案例如下所示:
package test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.ObjectMapper;
public class JsonGeneratorTest {
public static void main(String[] args) throws JsonGenerationException, IOException {
String ret = "";
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectMapper mapper = new ObjectMapper();
JsonGenerator jg = mapper.getJsonFactory().createJsonGenerator(new PrintWriter(bos));
jg.writeStartObject();
jg.writeStringField("name", "zhaokaiqiang");
jg.writeNumberField("age", 22);
jg.writeObjectField("sex", "man");
jg.writeArrayFieldStart("likes");
jg.writeString("apple");
jg.writeString("banner");
jg.writeStartObject();
jg.writeNumberField("index",1);
jg.writeStringField("color","red");
jg.writeEndObject();
jg.writeStartObject();
jg.writeNumberField("index",2);
jg.writeStringField("color","green");
jg.writeEndObject();
jg.writeEndArray();
jg.writeEndObject();
jg.flush();
jg.close();
ret = bos.toString();
bos.close();
System.out.println(ret);
}
}
运行代码输出结果如下图所示: