【问题标题】:Which configuration parameters are available for creating a JsonWriterFactory?哪些配置参数可用于创建 JsonWriterFactory?
【发布时间】:2018-04-17 15:45:12
【问题描述】:

看看我在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。通常我们可以直接从Json 类创建一个JsonWriter,但这并不能正确格式化JSON 对象。我们为createWriterFactory 方法指定了一个config 变量,现在据我所知,这是我们可以创建的唯一配置。我们还可以在config 映射中添加哪些其他配置参数?

【问题讨论】:

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


    【解决方案1】:

    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 实现)

    【讨论】:

    • 是的,它以人类可读的形式打印 JSON。我只是想知道是否还有其他“JSON-P 规范定义的常量字段值”。
    • 就规范而言,漂亮打印只有 1 个选项。但是,您可以使用 static.javadoc.io/javax.json/javax.json-api/1.1.2/javax/json/… 以规范标准的方式发现提供商特定的选项
    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多