converting Document objects in MongoDB 3 to POJOS

后端 未结 4 982
攒了一身酷
攒了一身酷 2020-12-11 01:36

I\'m saving an object with a java.util.Date field into a MongoDB 3.2 instance.

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsStr         


        
4条回答
  •  难免孤独
    2020-12-11 01:54

    It looks like you are using Date object inside "myObject". In that case, you should use a DateSerializer that implements JsonSerializer, JsonDeserializer and then register it with GsonBuilder. Sample code follows:

    public class My_DateSerializer implements JsonSerializer,
                                                              JsonDeserializer {
    
    @Override
    public LocalDate deserialize(JsonElement json, Type typeOfT,
                            JsonDeserializationContext context) throws JsonParseException {
        final String dateAsString = json.getAsString();
        final DateTimeFormatter dtf = DateTimeFormat.forPattern(DATE_FORMAT);
        if (dateAsString.length() == 0)
        {
            return null;
        }
        else
        {
            return dtf.parseLocalDate(dateAsString);
        }
    }
    
    @Override
    public JsonElement serialize(LocalDate src, Type typeOfSrc,
                                                         JsonSerializationContext context) {
        String retVal;
        final DateTimeFormatter dtf = DateTimeFormat.forPattern(DATE_FORMAT);
        if (src == null)
        {
            retVal = "";
        }
        else
        {
            retVal = dtf.print(src);
        }
        return new JsonPrimitive(retVal);
    }
    }
    

    Now register it with GsonBuilder:

    final GsonBuilder builder = new GsonBuilder()
               .registerTypeAdapter(LocalDate.class, new My_DateSerializer());      
    final Gson gson = builder.create();
    

提交回复
热议问题