blob: 84537a571baf6685116e734f2dd33796b24cb0f1 [file] [log] [blame]
Michael Hanlca740d72015-06-16 10:04:58 +02001package de.ids_mannheim.korap.utils;
2
3import com.fasterxml.jackson.core.JsonProcessingException;
4import com.fasterxml.jackson.databind.JsonNode;
5import com.fasterxml.jackson.databind.ObjectMapper;
6import com.fasterxml.jackson.databind.node.ArrayNode;
7import com.fasterxml.jackson.databind.node.ObjectNode;
8
9import java.io.File;
10import java.io.IOException;
11import java.util.ArrayList;
12import java.util.Iterator;
13import java.util.List;
14import java.util.Map;
15
16/**
17 * @author hanl
18 * @date 28/01/2014
19 */
20public class JsonUtils {
21 private static ObjectMapper mapper = new ObjectMapper();
22
Michael Hanlca740d72015-06-16 10:04:58 +020023
Michael Hanl8abaf9e2016-05-23 16:46:35 +020024 private JsonUtils () {}
25
26
27 public static String toJSON (Object values) {
Michael Hanlca740d72015-06-16 10:04:58 +020028 try {
29 return mapper.writeValueAsString(values);
Michael Hanl8abaf9e2016-05-23 16:46:35 +020030 }
31 catch (JsonProcessingException e) {
Michael Hanlca740d72015-06-16 10:04:58 +020032 return "";
33 }
34 }
35
Michael Hanl8abaf9e2016-05-23 16:46:35 +020036
37 public static JsonNode readTree (String s) {
Michael Hanlca740d72015-06-16 10:04:58 +020038 try {
39 return mapper.readTree(s);
Michael Hanl8abaf9e2016-05-23 16:46:35 +020040 }
41 catch (IOException e) {
Michael Hanlca740d72015-06-16 10:04:58 +020042 return null;
43 }
44 }
45
Michael Hanl8abaf9e2016-05-23 16:46:35 +020046
47 public static ObjectNode createObjectNode () {
Michael Hanlca740d72015-06-16 10:04:58 +020048 return mapper.createObjectNode();
49 }
50
Michael Hanl8abaf9e2016-05-23 16:46:35 +020051
52 public static ArrayNode createArrayNode () {
Michael Hanlca740d72015-06-16 10:04:58 +020053 return mapper.createArrayNode();
54 }
55
Michael Hanl8abaf9e2016-05-23 16:46:35 +020056
57 public static JsonNode valueToTree (Object value) {
Michael Hanlca740d72015-06-16 10:04:58 +020058 return mapper.valueToTree(value);
59 }
60
Michael Hanl8abaf9e2016-05-23 16:46:35 +020061
62 public static <T> T read (String json, Class<T> cl) throws IOException {
Michael Hanlca740d72015-06-16 10:04:58 +020063 return mapper.readValue(json, cl);
64 }
65
Michael Hanl8abaf9e2016-05-23 16:46:35 +020066
67 public static <T> T readFile (String path, Class<T> clazz)
Michael Hanlca740d72015-06-16 10:04:58 +020068 throws IOException {
69 return mapper.readValue(new File(path), clazz);
70 }
71
Michael Hanl8abaf9e2016-05-23 16:46:35 +020072
73 public static void writeFile (String path, String content)
74 throws IOException {
Michael Hanlca740d72015-06-16 10:04:58 +020075 mapper.writeValue(new File(path), content);
76 }
77
Michael Hanl8abaf9e2016-05-23 16:46:35 +020078
79 public static <T> T readSimple (String json, Class<T> cl) {
Michael Hanlca740d72015-06-16 10:04:58 +020080 try {
81 return mapper.readValue(json, cl);
Michael Hanl8abaf9e2016-05-23 16:46:35 +020082 }
83 catch (IOException e) {
Michael Hanlca740d72015-06-16 10:04:58 +020084 return null;
85 }
86 }
87
Michael Hanl8abaf9e2016-05-23 16:46:35 +020088
89 public static List<Map<String, Object>> convertToList (String json)
Michael Hanlca740d72015-06-16 10:04:58 +020090 throws JsonProcessingException {
91 List d = new ArrayList();
92 JsonNode node = JsonUtils.readTree(json);
93 if (node.isArray()) {
94 Iterator<JsonNode> nodes = node.iterator();
95 while (nodes.hasNext()) {
Michael Hanl8abaf9e2016-05-23 16:46:35 +020096 Map<String, Object> map = mapper.treeToValue(nodes.next(),
97 Map.class);
Michael Hanlca740d72015-06-16 10:04:58 +020098 d.add(map);
99 }
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200100 }
101 else if (node.isObject()) {
Michael Hanlca740d72015-06-16 10:04:58 +0200102 Map<String, Object> map = mapper.treeToValue(node, Map.class);
103 d.add(map);
104 }
105 return d;
106 }
107
108}