blob: 8204be69b151079d0a9cbcea815098ba408f1b24 (
plain)
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
45
46
47
48
49
50
51
52
|
package eu.equalparts.cardbase.json;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import eu.equalparts.cardbase.card.Card;
import eu.equalparts.cardbase.card.FullCardSet;
/**
* This class simply holds an {@code ObjectMapper} to be used whenever JSON must be parsed.
* In the future it may be removed in favour of individual mappers for each function.
*
* @author Eduardo Pedroni
*/
public final class JSON {
/**
* The Jackson {@code ObjectMapper} which parses fetched JSON files.
*/
public static final ObjectMapper mapper = createMapper();
/**
* Private constructor, this class is not to be instantiated.
*/
private JSON() {}
/**
* Instantiate and configure Jackson mapper statically.
*
* @return the {@code ObjectMapper}, ready to use.
*/
private static ObjectMapper createMapper() {
ObjectMapper objectMapper = new ObjectMapper();
// classes don't necessarily use all json fields
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// disable auto detection
objectMapper.disable(MapperFeature.AUTO_DETECT_CREATORS,
MapperFeature.AUTO_DETECT_FIELDS,
MapperFeature.AUTO_DETECT_GETTERS,
MapperFeature.AUTO_DETECT_IS_GETTERS);
SimpleModule sm = new SimpleModule();
sm.addDeserializer(Card.class, new CardDeserializer());
sm.addSerializer(Card.class, new CardSerializer());
sm.addDeserializer(FullCardSet.class, new FullCardSetDeserializer());
objectMapper.registerModule(sm);
return objectMapper;
}
}
|