Какие параметры конфигурации доступны для создания JsonWriterFactory?

Посмотрите этот код, который я видел в руководстве по Java ee

    /* 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 ответ

Решение

Единственные постоянные значения полей, определенные в спецификации 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 импл)

Другие вопросы по тегам