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")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM