2017-01-06 2 views
0

Я использую Gson для сериализации моего javabean в JSON, и у меня возникают проблемы с полями типа даты.Как создать поля даты с помощью Gson

Если я создаю GsonBuilder без переопределения

Gson gson = new GsonBuilder().create(); 

он генерирует поле даты в формате JSON в формате "Jan 6, 2017 12:00:00 AM", но с типом данных String.

Если установить строитель на формат даты

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); 

Он генерирует поле в нужном формате, но остается String.

С типом String я не могу выполнить запрос на основе периодов (например, this). Ручное изменение одной из записей, я был в состоянии получить ответ:

before: 
{"_id" : ObjectId("586fa17851ba381278b059ac"), 
"start" : "2017-01-06"), 
... 
} 

after: 
{"_id" : ObjectId("586fa17851ba381278b059ac"), 
"start" : ISODate("2017-01-06T12:00:00.000Z"), 
... 
} 

Как я могу обеспечить генерацию поля Date с помощью Gson?

+0

Я не думаю, что вы можете создать MongoDB несовместим с JSON Gson. Не могли бы вы использовать BSON? http://mongodb.github.io/mongo-java-driver/3.2/bson/extended-json/#mongodb-extended-json – Veeram

+0

Спасибо за ваш комментарий, я проверю, сколько мне придется изменить, чтобы принять BSON , Если вы предпочитаете, введите свой комментарий в качестве ответа. –

ответ

1

Не думайте, что вы можете создать Mongo db, совместимый с Json от Gson.

BSON может помочь вам с преобразованием. http://mongodb.github.io/mongo-java-driver/3.2/bson/extended-json/

Вы также можете изучить различные библиотеки объектов Mongo Db, которые будут обрабатывать эту часть для вас и многое другое.

Некоторые библиотеки включают в себя:

Морфий - http://mongodb.github.io/morphia/

Spring Монго Db - http://projects.spring.io/spring-data-mongodb/