forked from ibi-group/datatools-server
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Base.java
executable file
·44 lines (38 loc) · 1.93 KB
/
Base.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.conveyal.datatools.editor.controllers;
import com.conveyal.datatools.editor.models.transit.GtfsRouteType;
import com.conveyal.datatools.editor.models.transit.TripDirection;
import com.conveyal.geojson.GeoJsonModule;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import java.time.LocalDate;
import com.conveyal.datatools.editor.utils.JacksonSerializers;
import java.io.IOException;
import java.io.StringWriter;
public class Base {
public static ObjectMapper mapper = new ObjectMapper();
private static JsonFactory jf = new JsonFactory();
static {
SimpleModule mod = new SimpleModule();
mod.addDeserializer(LocalDate.class, new JacksonSerializers.LocalDateDeserializer());
mod.addSerializer(LocalDate.class, new JacksonSerializers.LocalDateSerializer());
mod.addDeserializer(GtfsRouteType.class, new JacksonSerializers.GtfsRouteTypeDeserializer());
mod.addSerializer(GtfsRouteType.class, new JacksonSerializers.GtfsRouteTypeSerializer());
mod.addDeserializer(TripDirection.class, new JacksonSerializers.TripDirectionDeserializer());
mod.addSerializer(TripDirection.class, new JacksonSerializers.TripDirectionSerializer());
mapper.getSerializerProvider().setNullKeySerializer(new JacksonSerializers.MyDtoNullKeySerializer());
mapper.registerModule(mod);
mapper.registerModule(new GeoJsonModule());
}
public static String toJson(Object pojo, boolean prettyPrint)
throws IOException {
StringWriter sw = new StringWriter();
JsonGenerator jg = jf.createGenerator(sw);
if (prettyPrint) {
jg.useDefaultPrettyPrinter();
}
mapper.writeValue(jg, pojo);
return sw.toString();
}
}