Jackson 使用(一)

来源:互联网 发布:单片机工程师月薪多少 编辑:程序博客网 时间:2024/06/07 05:53

Jackson简单介绍:

Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。

      json/xml------>java对象

      java对象------>json/xml

参考:http://www.blogjava.net/wangxinsh55/archive/2012/09/06/387179.html


jackson 1.x和2.x版本的注解是放置在不同的包下的

1.x是在jackson core jar包org.codehaus.jackson.annotate下

2.x是在jackson-databind包com.fasterxml.jackson.annotation下

依赖jar包:

 jackson-annotations-2.3.0.jar,jackson-core-2.3.0.jar,jackson-databind-2.3.0.jar

一.API文档:

http://fasterxml.github.io/jackson-databind/javadoc/2.0.4/

http://fasterxml.github.io/jackson-core/javadoc/2.0.4/

https://github.com/FasterXML/jackson-annotations

二·使用:

最重要的一个类:ObjectMapper用来转化json和java对象的

API解释:

 This mapper (or, data binder, or codec) provides functionality for converting between Java objects (instances of JDK provided core classes, beans), and matching JSON constructs. It will use instances of JsonParser and JsonGenerator for implementing actual reading/writing of JSON.

      

@Testpublic void write2String() throws IOException{User u = new User("guofeipeng","123");List<String> ls = new ArrayList<String>();ls.add("123");ls.add("234");ls.add("345");u.setStrs(ls);ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(u);  //java 2 jsonSystem.out.println(json);User user = mapper.readValue(json, User.class);//json 2 javaSystem.out.println(user);}





1.基本用法:

     1.1.序列化一个java对象

      java-->json

/** * 序列化一个对象 * @param user */@Testpublic void serialize() {System.out.println("=========serialize序列化对象==============");User user = new User("张三", "123");ObjectMapper mapper = new ObjectMapper();try {mapper.writeValue(new File("src/pros/user.json"), user);} catch (JsonGenerationException e) {e.printStackTrace();} catch (JsonMappingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
        1.2.反序列化一个java对象
              json--->ava

/** * 反序列化一个对象 */@Testpublic void deserialize() {System.out.println("========deserialize反序列化对象=========");ObjectMapper mapper = new ObjectMapper();User user = null;try {user = mapper.readValue(new File("src/pros/user.json"), User.class);} catch (IOException e) {e.printStackTrace();}System.out.println("userName:" + user.getName() + " password:"+ user.getPassword());}

        1.3.反序列化为一个Map集合(该)

@Testpublic void map() {System.out.println("==========读取值为Map========");ObjectMapper mapper = new ObjectMapper();Map map = null;try {map = mapper.readValue(new File("src/pros/user.json"), Map.class);} catch (IOException e) {e.printStackTrace();}System.out.println(map);}


            1.4.反序列化为一个Map集合(集合元素value是实体类对象的)

/** *json 解析成HashMap */@Testpublic void map1(){String str ="{\"u1\":{\"name\":\"张三1\",\"password\":\"123\"},\"u2\":{\"name\":\"张三2\",\"password\":\"abc\"}}";ObjectMapper mapper = new ObjectMapper();HashMap<String,User> us = null;try {us = mapper.readValue(str,new TypeReference<HashMap<String,User>>(){});} catch (IOException e) {e.printStackTrace();}System.out.println(us);}

2.Tree Model

       所有的json对象都是一个树形结构,可以比作DOM,XML类似节点。

     使用的类:ObjectMapper ,JsonNode,ObjectNode

   

@Testpublic void testTree2() throws JsonProcessingException, IOException {String TREE_MODEL_BINDING = "{\"姑姑\":\"王姑姑1\",\"叔叔1\":\"王书\",\"叔叔2\":[{\"侄子1\":\"小明\"}]}";ObjectMapper mapper = new ObjectMapper();  //定义转换类 ObjectNode root =mapper.createObjectNode();//创建根节点root.put("爷爷", "老老王");root.put("奶奶", "老老奶");ObjectNode parents = mapper.createObjectNode();  //创建2级子节点parents.put("爸爸", "老爸");parents.put("妈妈","老妈");root.put("parents", parents);      //绑定2级子节点JsonNode uncles = mapper.readTree(TREE_MODEL_BINDING);root.put("antOruncles",uncles);System.out.println(mapper.writeValueAsString(root));//打印树}


0 0
原创粉丝点击