JSON框架- jackson
来源:互联网 发布:node 编辑:程序博客网 时间:2024/04/30 10:22
ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。
ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。
如下:
- writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。
- writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。
- writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。
- writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。
e.g. :
- bean - - json
@Test public void testSelect(){ /*set auto commit ,which equals to the above*/ SqlSession session = MybatisUtils.getFactory().openSession(true); String statement = "com.web.mapper.userMapper.getUser"; /*return the effect rows*/ User user = session.selectOne(statement, 3); System.out.println("effect rows.."+user); ObjectMapper objectMapper = new ObjectMapper(); try { //writeValue(System.out, user) objectMapper.writeValue(System.out, user); /* String json = objectMapper.writeValueAsString(user); */ } catch (JsonGenerationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JsonMappingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
- ObjectMapper支持从byte[]、File、InputStream、字符串等数据的JSON反序列化。
e.g. :
String json = objectMapper.writeValueAsString(user); System.out.println("json.."+json); //Deserialize。。 User user2 = objectMapper.readValue(json, User.class); System.out.println("user2。。"+user2);
- the result print as follows–:
effect rows..User [age=13, id=3, name=tom4]json..{"id":3,"name":"tom4","age":13}user2。。User [age=13, id=3, name=tom4]
- 若对象中有date,需要使用SimpleDateFormat进行格式化
objectMapper.getDeserializationConfig().setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
- json - to-
Map<String, Object>
- json - to-
Map<String, Object> map = objectMapper.readValue(json, Map.class); for(Entry<String, Object> entry : map.entrySet()){ System.out.println(entry.getKey()+","+entry.getValue()); }
- the result as follows :
json..{"id":3,"name":"tom4","age":13}//转换为jsonuser2。。User [age=13, id=3, name=tom4]//读出为Userid,3//json to mapname,tom4age,13
Map<String,Object>
to json
String json2 = objectMapper.writeValueAsString(map);
- the result as follows :
json..{"id":3,"name":"tom4","age":13}
List<User>
to json
List<User> users= session.selectList(statement); ObjectMapper objectMapper = new ObjectMapper(); String json = objectMapper.writeValueAsString(users);
- the result as follows
json..[{"id":1,"name":"tom1","age":11},{"id":2,"name":"tom2","age":12},{"id":3,"name":"tom4","age":13},{"id":7,"name":"tom5","age":15},{"id":8,"name":"Tom6","age":16},{"id":9,"name":"Tom6","age":16}]
json to
List<User>
Jackson处理一般的JavaBean和Json之间的转换只要使用ObjectMapper 对象的readValue和writeValueAsString两个方法就能实现。但是如果要转换复杂类型Collection如
List<User>
,那么就需要先反序列化复杂类型 为泛型的Collection Type。
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(ArrayList.class, User.class); List<User> userList = objectMapper.readValue(json, javaType); for (User user:userList) { System.out.println(user); }
- the result as follows :
User [age=11, id=1, name=tom1]User [age=12, id=2, name=tom2]User [age=13, id=3, name=tom4]User [age=15, id=7, name=tom5]User [age=16, id=8, name=Tom6]User [age=16, id=9, name=Tom6]
Map<String,User>
to JSON
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(ArrayList.class, User.class); List<User> userList = objectMapper.readValue(json, javaType); Map<String, User> userMap = new HashMap<String, User>(); for (User user:userList) {// System.out.println(user); for (int i = 0; i < userList.size(); i++) { userMap.put("user"+i, user); } } String json2 = objectMapper.writeValueAsString(userMap); System.out.println("json2.."+json2); /*three parameters map.class,key.class,value.class*/ JavaType javaType2 = objectMapper.getTypeFactory().constructParametricType(Map.class,String.class, User.class); Map<String, User> userMap2 = objectMapper.readValue(json2, javaType2); for(Entry<String, User> entry : userMap2.entrySet()){ System.out.println(entry.getKey()+","+entry.getValue()); }
- 从
List<User>
直接转换过来的json,不能直接转换为Map<String,User>
!!!
- 从
list to json..[{"id":1,"name":"tom1","age":11},{"id":2,"name":"tom2","age":12},{"id":3,"name":"tom4","age":13},{"id":7,"name":"tom5","age":15},{"id":8,"name":"Tom6","age":16},{"id":9,"name":"Tom6","age":16}]
- 更改为json2:
json2..{"user0":{"id":9,"name":"Tom6","age":16},"user2":{"id":9,"name":"Tom6","age":16},"user1":{"id":9,"name":"Tom6","age":16},"user4":{"id":9,"name":"Tom6","age":16},"user3":{"id":9,"name":"Tom6","age":16},"user5":{"id":9,"name":"Tom6","age":16}}
- 转换之后的
Map<User>
:
- 转换之后的
user0,User [age=16, id=9, name=Tom6]user2,User [age=16, id=9, name=Tom6]user1,User [age=16, id=9, name=Tom6]user4,User [age=16, id=9, name=Tom6]user3,User [age=16, id=9, name=Tom6]user5,User [age=16, id=9, name=Tom6]
0 0
- jackson框架解析json
- JackSON框架转换JSON
- JSON框架- jackson
- Jackson框架解析Json
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Jackson 框架,轻易转换JSON
- Spring基础--Spring(你必须要懂得基础)
- window 弹窗
- HBase简介(很好的梳理资料)
- 使用api绘制统计图
- 学生菜单
- JSON框架- jackson
- linux下redis的主从
- Angular+require单页面智能路由,链接参数化练手。
- Candies_poj3159_差分约束
- WebSocket握手协议
- 13.Spring学习笔记_通过注解配置Bean(by尚硅谷_佟刚)
- 肖特基二极管和快恢复二极管区别
- 常见的非阻塞队列
- Spring+Websocket实现消息的推送