Разница между ObjectMapper().createObjectNode и JsonNodeFactory.instance.objectNode()?

Я видел сообщение о вставке новых узлов в JsonNode и столкнулся с два отдельных ответа, но я не могу понять разницу между ними.

По моему небольшому опыту, ObjectMapper не позволяет создавать ничего, кроме ObjectNode и ArrayNode, а JsonNodeFactory позволяет создавать целая куча узлов.

Кроме этого, в чем еще отличия?

Кроме того, учитывая, что ObjectMapper считается дорогим, я был Интересно, последний способ более эффективен?


person THIS USER NEEDS HELP    schedule 12.09.2016    source источник


Ответы (1)


Нет никакой разницы между следующими подходами:

ObjectMapper mapper = new ObjectMapper();
ObjectNode objectNode = mapper.createObjectNode();
ObjectNode objectNode = JsonNodeFactory.instance.objectNode();

Под капотом Джексон делегирует createObjectNode() в JsonNodeFactory.

Дополнительные сведения об использовании JsonNodeFactory см. этот ответ.

person cassiomolin    schedule 12.09.2016
comment
Итак, если все, что я хочу от ObjectMapper, это создать ObjectNode, будет ли более эффективно, если я вместо этого буду использовать JsonNodeFactory, поскольку мне не нужно будет создавать ObjectMapper? - person THIS USER NEEDS HELP; 12.09.2016
comment
@THISUSERNEEDSHELP Если вам просто нужно создать ObjectNode экземпляров, вам достаточно JsonNodeFactory. - person cassiomolin; 13.09.2016
comment
Просто чтобы убедиться, что даже если я делаю несколько ObjectNodes-JsonNodeFactory, это должно быть дешевле, чем создание нового ObjectMapper? - person THIS USER NEEDS HELP; 14.09.2016
comment
@THISUSERNEEDSHELP Я не проводил никаких тестов производительности, но если вы посмотрите на конструктор по умолчанию ObjectMapper, вы поймете, что создается много объектов. Наверняка это будет потреблять больше ресурсов, чем просто использование JsonNodeFactory. Если вам просто нужно создать экземпляры ObjectNode и не нужно выполнять какие-либо сопоставления, используйте класс JsonNodeFactory. - person cassiomolin; 14.09.2016