Jackson的简单使用
来源:互联网 发布:新华三java笔试题 编辑:程序博客网 时间:2024/05/16 07:57
Jackson既可以将对象转化为jason格式,又可以将jason字符串转化为java对象。他的效率要比xstream高,因为他是单例的。
首先,我们创建两个对象,以便jackson来使用:
public class User { private int id; private String username; private String password; private Group group; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } public User() { } public User(int id, String username, String password, Group group) { super(); this.id = id; this.username = username; this.password = password; this.group = group; } public User(int id, String username, String password) { super(); this.id = id; this.username = username; this.password = password; }}public class Group { private int id; private String name; List<User> users; public void addUser(User u) { if(users==null) { users = new ArrayList<User>(); } users.add(u); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Group(int id, String name) { super(); this.id = id; this.name = name; } public Group() { }}
下面通过代码和注释来讲解jackson的简单使用
<span style="white-space:pre"></span>@Testpublic void test01() {StringWriter out = new StringWriter();JsonGenerator jg = null;try {//1、创建JsonFactoryJsonFactory jf = new JsonFactory();//2、创建JsonGeneratorjg = jf.createJsonGenerator(out);//使用一种相对漂亮的格式输出jg.useDefaultPrettyPrinter();//3、创建ObjectMapper,通过ObjectMapper来写对象User u = new User(1,"劳动法","123",new Group(1,"财务处"));ObjectMapper mapper = new ObjectMapper();mapper.writeValue(jg, u);System.out.println(out.toString());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if(jg!=null) jg.close();} catch (IOException e) {e.printStackTrace();}}}@Testpublic void test02() {StringWriter out = new StringWriter();JsonGenerator jg = null;try {//1、创建JsonFactoryJsonFactory jf = new JsonFactory();//2、创建JsonGeneratorjg = jf.createJsonGenerator(out);//使用一种相对漂亮的格式输出//jg.useDefaultPrettyPrinter();//3、创建ObjectMapper,通过ObjectMapper来写对象List<User> us = new ArrayList<User>();User u = new User(1,"劳动法","123",new Group(1,"财务处"));us.add(u);u = new User(2,"猪八戒","123",new Group(1,"财务处"));us.add(u);u = new User(3,"张学友","123",new Group(2,"教务处"));us.add(u);ObjectMapper mapper = new ObjectMapper();mapper.writeValue(jg, us);System.out.println(out.toString());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if(jg!=null) jg.close();} catch (IOException e) {e.printStackTrace();}}}@Testpublic void test02_1() {List<User> us = new ArrayList<User>();User u = new User(1,"劳动法","123",new Group(1,"财务处"));us.add(u);u = new User(2,"猪八戒","123",new Group(1,"财务处"));us.add(u);u = new User(3,"张学友","123",new Group(2,"教务处"));us.add(u);System.out.println(JsonUtil.getInstance().obj2json(us));}@Testpublic void test03() {try {String json = "{\"id\":1,\"username\":\"杂货\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}}";ObjectMapper mapper = new ObjectMapper();User u = mapper.readValue(json, User.class);System.out.println(u.getId()+","+u.getUsername()+","+u.getGroup().getName());} catch (JsonParseException e) {e.printStackTrace();} catch (JsonMappingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}@Testpublic void test04() {try {String json = "[{\"id\":1,\"username\":\"劳动法\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":2,\"username\":\"猪八戒\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":3,\"username\":\"张学友\",\"password\":\"123\",\"group\":{\"id\":2,\"name\":\"教务处\"}}]";ObjectMapper mapper = new ObjectMapper();//在把json转换为list的时候,不能直接存储Bean对象,list中存储的是Map对象/*List<User> us = mapper.readValue(json,List.class);for(User u:us) {System.out.println(u.getUsername());}*//** * 所以的json都是通过map来存储的,不会直接存储bean,但是在开发中,把字符串转换为对象 * 一般只会对单个的对象转换,很少会用到对对象的完全转换 */List<Map<String,Object>> us = mapper.readValue(json, List.class);for(Map<String,Object> m:us) {System.out.println(m.get("id"));System.out.println(m.get("group"));}} catch (JsonParseException e) {e.printStackTrace();} catch (JsonMappingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}@Testpublic void test05() {try {String json = "[{\"id\":1,\"username\":\"劳动法\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":2,\"username\":\"猪八戒\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":3,\"username\":\"张学友\",\"password\":\"123\",\"group\":{\"id\":2,\"name\":\"教务处\"}}]";ObjectMapper mapper = new ObjectMapper();/* * 在Jaskson中提供了一种基于节点的读取方法 */JsonNode node = mapper.readTree(json);//判断这个节点是否是数组System.out.println(node.isArray());System.out.println(node.size());System.out.println(node.get(0).get("username"));System.out.println(node.get(0).get("group").get("name"));} catch (JsonParseException e) {e.printStackTrace();} catch (JsonMappingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
我们通过上述代码已经简单了解了jackson的使用,根据上述代码,我们可以构造一个jackson的util类,来更方便的使用他。上述代码中的test02_1也用到了此类。
public class JsonUtil {private static JsonUtil ju;private static JsonFactory jf;private static ObjectMapper mapper;private JsonUtil(){}public static JsonUtil getInstance() {if(ju==null) ju = new JsonUtil();return ju;}public static ObjectMapper getMapper() {if(mapper==null) {mapper = new ObjectMapper();}return mapper;}public static JsonFactory getFactory() {if(jf==null) jf = new JsonFactory();return jf;}public String obj2json(Object obj) {JsonGenerator jg = null;try {jf = getFactory();mapper = getMapper();StringWriter out = new StringWriter();jg = jf.createJsonGenerator(out);mapper.writeValue(jg, obj);return out.toString();} catch (IOException e) {e.printStackTrace();} finally {try {if(jg!=null) jg.close();} catch (IOException e) {e.printStackTrace();}}return null;}public Object json2obj(String json,Class<?> clz) {try {mapper = getMapper();return mapper.readValue(json,clz);} catch (JsonParseException e) {e.printStackTrace();} catch (JsonMappingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}}
0 0
- Jackson的简单使用
- Jackson的简单使用
- 初步了解jackson,简单的使用jackson的annotation
- 初步了解jackson,简单的使用jackson的annotation
- 简单的使用jackson的annotation
- Jackson的ObjectMapper类简单使用
- jackson简单使用
- Jackson的简单用法
- jackson 的简单应用
- Jackson的使用
- Jackson的使用
- jackson的基本使用
- java jackson的使用
- [Jackson] @JsonView的使用
- jackson的使用
- jackson的使用
- Jackson的使用
- Jackson的基本使用
- UILabel 设置行间距
- oracle 数据导出和导入
- 基于直方图的图像全局二值化算法原理、实现--灰度平局值值法
- 21款强大高效的Photoshop扩展插件(一)
- iOS开发中 c与OC的使用比例是多少?
- Jackson的简单使用
- AFNetworking下载网络相关的附件(音视频)等
- 网站集健康检查(health Check)
- 【笔记】JavaScript编码规范- 逗号和分号
- C++复习:static_cast
- Java异常体系
- Gradle第四章:安装Gradle
- 基于直方图的图像全局二值化算法原理、实现--百分比阈值(P-Tile)
- Categories和Extensions