Джексон проглатывает пустой объект JSON при анализе в VertxJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Джексон проглатывает пустой объект JSON при анализе в Vertx

Сообщение Anonymous »

Код в «контроллере» Vert.x-Web vertxVersion=4.5.11

Код: Выделить всё

var mapper = DatabindCodec.mapper();
mapper.configure( SerializationFeature.FAIL_ON_EMPTY_BEANS, false );
mapper.configure( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false );
mapper.setSerializationInclusion( Include.NON_EMPTY );

...

router.patch( "/my" ).consumes( JSON ).produces( JSON ).blockingHandler( this::validate );

...

void validate( RoutingContext rc ) {
JsonObject json = rc.body().asJsonObject();
log.info( "validate {} >> {}", rc.body().asString(), json );
}
при получении запроса JSON:

Код: Выделить всё

{
"object": {
"name": "aaa",
"data": {
"weNr": []
}
}
}
поле «данные» игнорируется, в результате чего создается следующий журнал:

Код: Выделить всё

validate {"object":{"name":"aaa","data":{"weNr":[]}}} >> {"object":{"name":"aaa"}}}
Если массив weNr заполнен, проанализированный JSON выглядит так, как ожидалось:

Код: Выделить всё

validate {"object":{"name":"aaa","data":{"weNr":[9410]}}} >> {"object":{"name":"aaa","data":{"weNr":[9410]}}
Если у «данных» есть какое-то другое непустое поле, оно сохраняется, но пустое «weNr» все равно проглатывается:

Код: Выделить всё

{
"object": {
"name": "aaa",
"data": {
"weNr": [],
"boo":"far"
}
}
}
производит:

Код: Выделить всё

validate {"object":{"name":"aaa","data":{"weNr":[],"boo":"far"}}} >> {"object":{"name":"aaa","data":{"boo":"far"}}}}
Как настроить DatabindCodec.mapper() или DatabindCodec.mapper().getFactory() или что-то еще, чтобы разрешить пустые объекты JSON?< /п>

Подробнее здесь: https://stackoverflow.com/questions/792 ... g-in-vertx
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»