哪些配置参数可用于创建JsonWriterFactory?

时间:2018-04-17 15:45:13

标签: java json java-ee java-ee-7

查看我在Java ee tutorial

上看到的代码
    /* Write formatted JSON Output */
    Map<String,String> config = new HashMap<>();
    config.put(JsonGenerator.PRETTY_PRINTING, "");
    JsonWriterFactory factory = Json.createWriterFactory(config);

    StringWriter stWriterF = new StringWriter();
    try (JsonWriter jsonWriterF = factory.createWriter(stWriterF)) {
        jsonWriterF.writeObject(model);
    }
    documentJsonFormatted = stWriterF.toString();

我们正在创建一个JsonWriter来写入字符串缓冲区StringWriter。通常我们可以直接从JsonWriter类创建Json,但这不会正确格式化JSON对象。我们为config方法指定了一个createWriterFactory变量,据我所知,这是我们可以创建的唯一配置。我们可以在config地图中添加哪些其他配置参数?

1 个答案:

答案 0 :(得分:0)

JSON-P规范定义的唯一常量字段值是您已经列出的那个(JsonGenerator.PRETTY_PRINTING),根据:

https://javadoc.io/doc/javax.json/javax.json-api/1.1.2

你在寻找什么样的漂亮印刷品?您使用的是什么JSON-P实现?

我尝试了以下代码:

    JsonObject model = Json.createObjectBuilder()
                    .add("foo", "bar")
                    .add("boo", "baz")
                    .build();
    /* Write formatted JSON Output */
    Map<String, String> config = new HashMap<>();
    config.put(JsonGenerator.PRETTY_PRINTING, "");
    JsonWriterFactory factory = Json.createWriterFactory(config);

    StringWriter stWriterF = new StringWriter();
    try (JsonWriter jsonWriterF = factory.createWriter(stWriterF)) {
        jsonWriterF.writeObject(model);
    }
    System.out.println(stWriterF);

这导致了一个漂亮的JSON字符串:

{
    "foo": "bar",
    "boo": "baz"
}

(这里我使用org.glassfish:javax.json:1.1.+作为我的JSON-P impl)