[项目实战]Jackson 框架之java对象和json数据转换实现
2015-01-16 15:05
459 查看
简介: Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
官方wiki:http://wiki.fasterxml.com/JacksonInFiveMinutes
官方文档:http://wiki.fasterxml.com/JacksonDocumentation
github:https://github.com/FasterXML/jackson
一、准备工作 jackson-databind 下载地址: http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/ 注意:使用此功能需要依赖以下jar文件 jackson-core 和 jackson-annotations github: https://github.com/FasterXML/jackson-annotations 下载地址:http://repo1.maven.org/maven2/com/fasterxml/jackson/core/ 二、实例 (1)java对象转JSON
/*** * json转clazz类(不含类中属性数据验证) */ public static Object jsonToObject(String jsonString, Class clazz){ ObjectMapper mapper = new ObjectMapper(); try { return mapper.readValue(jsonString, clazz); }catch (Exception e) { // TODO Auto-generated catch block } }
(2)json转java对象
json结构:
实现方法:
/*** * json转clazz类(不含类中属性数据验证) */ public static Object jsonToObject(String jsonString, Class clazz){ ObjectMapper mapper = new ObjectMapper(); try { return mapper.readValue(jsonString, clazz); }catch (Exception e) { // TODO Auto-generated catch block } }
(3)java对象转xml(依赖于stax2-api.jar)
XmlMapper xml = new XmlMapper(); StringWriter sw = new StringWriter(); xml.writeValue(sw, bean);
(4)json中取属性值
/** * 实现将包含单一对象和其他集合的json串中的单一对象转换为对象 * @param data :json字符串 * @param nodeName :预获取的节点名称 * @param cls:节点对应转换的对象 * @return */ public static Object parseJsonToObject(String data, String nodeName, Class<?> cls) { // 用来展现解析Json得到的值 Object object = null; ObjectMapper mapper = new ObjectMapper(); try { JsonNode rootNode = mapper.readTree(data); // 读取Json // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值 JsonNode strs = rootNode.path(nodeName); // JsonNode strs1 = rootNode.get(nodeName); if (!"".equals(strs)) { object = mapper.readValue(strs.toString(), cls); } } catch (Exception e) { } return object; } /** * 实现获取json串中预获取的节点部分 * @param data:json字符串 * @param nodeName:预获取的节点名称 * @return */ public static String parseJson(String data, String nodeName) { // 用来展现解析Json得到的值 StringBuffer buf = new StringBuffer(); ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode; try { rootNode = mapper.readTree(data); // 读取Json // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值 String strs = ""; if(rootNode.path(nodeName).getClass()==ObjectNode.class){ strs = (rootNode.path(nodeName)==null ? "" :rootNode.path(nodeName)).toString(); }else{ strs = rootNode.path(nodeName).asText();// JsonNode strs1 =rootNode.get(nodeName); } buf.append(strs); } catch (Exception e) { e.printStackTrace(); } return buf.toString(); }
(5)json转List
/** * json转List * @param data:json数据 * @param nodeName:预获取的节点名称 * @param clazz:节点对应转换的对象 * @return */ public static <T> List<T> parseJsonToList(String data, String nodeName, Class<?> clazz) { List<T> list = null; TypeFactory t = TypeFactory.defaultInstance(); // 指定容器结构和类型(这里是ArrayList和clazz) ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode; try { rootNode = mapper.readTree(data);// 读取Json // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值 if (null != rootNode.get(nodeName)) { JsonNode strs = rootNode.path(nodeName); // JsonNode strs1 = // rootNode.get(nodeName); list = mapper.readValue(strs.toString(),t.constructCollectionType(ArrayList.class, clazz)); } // 如果T确定的情况下可以使用下面的方法: // List<T> list = mapper.readValue(jsonVal, new TypeReference<List<T>>() {}); } catch (IOException e) { } return list; }
三、小结 1.json中的key必须与与java对象中的field属性对应。 2.Date是以long类型进行输出的。阅读更多
相关文章推荐
- Jackson 框架,轻易实现JAVA对象和JSON串互转
- Jackson 框架,JSON和java对象的互相转换
- Jackson框架下,Java对象与JSON之间的互相转换
- Java对象Json序列化—Jackson框架
- json:Json-lib框架——实现java对象与json、xml的互转
- java对象和json数据转换实现方式3-使用jackson实现
- Jackson实现Java对象与JSON的相互转换
- Java框架JSON-RPC项目demo代码实战
- Jackson 框架,转换java对象、xml、json更容易
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
- Java对象与Json对象的相互转化之Jackson实现方式
- java对象和json数据转换实现方式3-使用jackson实现
- 通过Jackson实现Java对象和json字符串的相互转换
- Jackson 框架,转换java对象、xml、json更容易
- 五分钟Jackson入门 JSON数据与Java对象相互转换(附项目源码)
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
- jackson实现Java对象与json的互转
- xStream框架完美实现Java对象和xml文档JSON、XML相互转换
- 使用Jackson来实现Java对象与JSON的相互转换的教程