Json与对象的相互转换

一、 JSON解析器:

* 常见的解析器:Jsonlib,Gson,fastjson,jackson

二、 JSON转为Java对象

      步骤:
            1. 导入jackson的相关jar包
            2. 创建Jackson核心对象 ObjectMapper
	        3. 调用ObjectMapper的相关方法进行转换
			a. readValue(json字符串数据,Class)

三、 Java对象转换JSON

      1. 使用步骤:
			a. 导入jackson的相关jar包
			b. 创建Jackson核心对象 ObjectMapper
			c. 调用ObjectMapper的相关方法进行转换
				1. 转换方法:
					* writeValue(参数1,obj):
	                       参数1:
	                              File:将obj对象转换为JSON字符串,并保存到指定的文件中
	                              Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
	                              OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
	                      * writeValueAsString(obj):将对象转为json字符串

四、例子

            public class JacksonTest {
                 //Java对象转为JSON字符串
                 @Test
                 public void test1() throws Exception {

                    // 1、创建Person对象
                          Person p  = new Person();
                          p.setName("张三");
                          p.setAge(23);
                          p.setGender("男");

                    // 2、创建Jackson的核心对象  ObjectMapper
                          ObjectMapper mapper = new ObjectMapper();
       
                    //3.转换
                          /*

                              转换方法:
                                    writeValue(参数1,obj):
                              参数1:
                                    File:将obj对象转换为JSON字符串,并保存到指定的文件中
                                    Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
                                    OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
                                writeValueAsString(obj):将对象转为json字符串

                           */
                    String json = mapper.writeValueAsString(p);
  
                    //System.out.println(json);//{"name":"张三","age":23,"gender":"男"}



                    //writeValue,将数据写到d://a.txt文件中
                    //mapper.writeValue(new File("d://a.txt"),p);

                    //writeValue.将数据关联到Writer中
                    mapper.writeValue(new FileWriter("d://b.txt"),p);
          }

             @Test
             public void test2() throws Exception {

                    //1.创建Person对象
                    Person p = new Person();
                    p.setName("张三");
                    p.setAge(23);
                    p.setGender("男");
                    p.setBirthday(new Date());



                   //2.转换
                    ObjectMapper mapper = new ObjectMapper();
                    String json = mapper.writeValueAsString(p);

                    System.out.println(json);//{"name":"张三","age":23,"gender":"男","birthday":1530958029263}
                                //{"name":"张三","age":23,"gender":"男","birthday":"2018-07-07"}
             }
              @Test
              public void test3() throws Exception {
                    //1.创建Person对象
                    Person p = new Person();
                    p.setName("张三");
                    p.setAge(23);
                    p.setGender("男");
                    p.setBirthday(new Date());

                    Person p1 = new Person();
                    p1.setName("张三");
                    p1.setAge(23);
                    p1.setGender("男");
                    p1.setBirthday(new Date());

                    Person p2 = new Person();
                    p2.setName("张三");
                    p2.setAge(23);
                    p2.setGender("男");
                    p2.setBirthday(new Date());


                    //创建List集合
                    List<Person> ps = new ArrayList<Person>();
                    ps.add(p);
                    ps.add(p1);
                    ps.add(p2);


                    //2.转换
                    ObjectMapper mapper = new ObjectMapper();
                    String json = mapper.writeValueAsString(ps);
                    // [{},{},{}]
                    //[{"name":"张三","age":23,"gender":"男","birthday":"2018-07-07"},{"name":"张三","age":23,"gender":"男","birthday":"2018-07-07"},            {"name":"张三","age":23,"gender":"男","birthday":"2018-07-07"}]
                    System.out.println(json);
               }
             @Test
             public void test4() throws Exception {
                    //1.创建map对象
                    Map<String,Object> map = new HashMap<String,Object>();
                    map.put("name","张三");
                    map.put("age",23);
                    map.put("gender","男");


                    //2.转换
                    ObjectMapper mapper = new ObjectMapper();
                    String json = mapper.writeValueAsString(map);
                    //{"name":"张三","age":23,"gender":"男"}
                    System.out.println(json);//{"gender":"男","name":"张三","age":23}
             }
             //演示 JSON字符串转为Java对象
             @Test
             public void test5() throws Exception {
                   //1.初始化JSON字符串
                   String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";

                   //2.创建ObjectMapper对象
                   ObjectMapper mapper = new ObjectMapper();
                   //3.转换为Java对象 Person对象
                   Person person = mapper.readValue(json, Person.class);

                  System.out.println(person);
            }

五、Java对象转换JSON时可能需要的注解(作用在对象属性上)

注解:
1. @JsonIgnore:排除属性。
2. @JsonFormat:属性值得格式化
* @JsonFormat(pattern = "yyyy-MM-dd")

posted @ 2020-09-01 14:30  jock_javaEE  阅读(2327)  评论(0)    收藏  举报