Jackson JsonGenerator

时间:2020-01-09 10:36:12  来源:igfitidea点击:

Hymanson的JsonGenerator用于从Java对象(或者代码从中生成JSON的任何数据结构)生成JSON。

创建一个JsonGenerator

为了创建HymansonJsonGenerator,我们必须首先创建JsonFactory实例。这是创建JsonFactory的方法:

JsonFactory factory = new JsonFactory();

一旦创建了JsonFactory,就可以使用JsonFactory的createGenerator()方法创建JsonGenerator。这是创建JsonGenerator的示例:

JsonFactory factory = new JsonFactory();

JsonGenerator generator = factory.createGenerator(
    new File("data/output.json"), JsonEncoding.UTF8);

createGenerator()方法的第一个参数是生成的JSON的目的地。在上面的示例中,参数是一个"文件"对象。这意味着生成的JSON将被写入给定文件。 createGenerator()方法是重载的,因此有其他版本的createGenerator()方法,例如采用OutputStream等,为我们提供将生成的JSON写入何处的不同选择。

createGenerator()方法的第二个参数是生成JSON时使用的字符编码。上面的示例使用UTF-8.

使用JsonGenerator生成JSON

一旦创建了JsonGenerator,就可以开始生成JSON。 JsonGenerator包含一组write()方法,可用于编写JSON对象的各个部分。这是一个使用HymansonJsonGenerator生成JSON的简单示例:

JsonFactory factory = new JsonFactory();

JsonGenerator generator = factory.createGenerator(
    new File("data/output.json"), JsonEncoding.UTF8);

generator.writeStartObject();
generator.writeStringField("brand", "Mercedes");
generator.writeNumberField("doors", 5);
generator.writeEndObject();

generator.close();

本示例首先调用writeStartObject(),将" {"写入输出。然后该示例调用writeStringField(),将brand字段名称+值写入输出。之后,调用writeNumberField()方法,该方法将doors字段名称+值写入输出。最后,调用writeEndObject(),将一个}写入输出。

JsonGenerator还有许多我们可以使用的写方法。这个例子只显示了其中一些。

关闭JsonGenerator

完成生成JSON后,我们应该关闭JsonGenerator。我们可以通过调用它的close()方法来实现。这是关闭JsonGenerator的样子:

generator.close();

关闭JsonGenerator也将关闭文件或者OutputStream等。JsonGenerator其中写入生成的JSON。