package org.meaningfulweb.util; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.lang.StringUtils; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.map.MappingJsonFactory; import org.codehaus.jackson.map.ObjectMapper; public class JsonUtils { public static boolean looksLikeJson(String content) { return StringUtils.trim(content).startsWith("{"); } public static JsonNode parseJson(String json) throws IOException { ObjectMapper mapper = new ObjectMapper(); JsonNode root = null; try { root = mapper.readValue(new StringReader(json), JsonNode.class); } catch (Exception e) { throw new IOException("JsonConfig is invalid", e); } return root; } public static String getStringValue(JsonNode parent, String name) { JsonNode node = parent.get(name); if (node != null) { return node.getValueAsText(); } return null; } public static boolean getBooleanValue(JsonNode parent, String name, boolean defaultValue) { JsonNode node = parent.get(name); if (node != null) { return node.getBooleanValue(); } return defaultValue; } public static int getIntValue(JsonNode parent, String name, int defaultValue) { JsonNode node = parent.get(name); if (node != null) { return node.getIntValue(); } return defaultValue; } public static long getLongValue(JsonNode parent, String name, long defaultValue) { JsonNode node = parent.get(name); if (node != null) { return node.getLongValue(); } return defaultValue; } public static String serializeToJson(Object object) { try { StringWriter sw = new StringWriter(); // serialize ObjectMapper mapper = new ObjectMapper(); MappingJsonFactory jsonFactory = new MappingJsonFactory(); JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(sw); mapper.writeValue(jsonGenerator, object); sw.close(); return sw.toString(); } catch (Exception e) { return null; } } public static Object deserializeFromJson(String json, Class valueType) { try { ObjectMapper mapper = new ObjectMapper(); MappingJsonFactory jsonFactory = new MappingJsonFactory(); JsonParser jsonParser = jsonFactory.createJsonParser(json); return mapper.readValue(jsonParser, valueType); } catch (Exception e) { return null; } } public static List<String> getFieldNames(JsonNode parent) { Iterator<String> fieldNameIt = parent.getFieldNames(); List<String> fieldNames = new ArrayList<String>(); while (fieldNameIt.hasNext()) { String fieldName = fieldNameIt.next(); fieldNames.add(fieldName); } return fieldNames; } }