9.jackjson使用教程

 

1.導入相關jar

        <!-- 10.jackson -->
        <!--10.1 定義了底層的streaming API和實現了Json特性 -->
             <dependency>
                 <groupId>com.fasterxml.jackson.core</groupId>
                 <artifactId>jackson-core</artifactId>
                 <version>2.7.3</version>
           </dependency>
           <!-- 10.2 實現了數據綁定和對象序列化,它依賴於streaming和annotations的包  -->
          <dependency>
                  <groupId>com.fasterxml.jackson.core</groupId>
                  <artifactId>jackson-databind</artifactId>
                  <version>2.7.3</version>
          </dependency>
          <!-- 10.3 包含了標準的Jackson註解。本文暫不介紹 -->
          <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.7.3</version>
          </dependency>

 

2.jackson經常使用方法記錄

2.1 準備實體類

安裝lombok插件html

http://www.javashuo.com/article/p-zggrddme-cd.html前端

2.2 對象轉json

2.2.1 將全部轉json 忽略指定的屬性 及null值

 

需求:json

 

效果:app

方式1: 缺點:一個類上定義忽略的字段都會被忽略  別人若是須要就沒辦法了編碼

@JsonIgnoreProperties({"descr", "other"})//忽略字段 descr, other  other 沒有用到 這裏只是展現忽略多個字段的方式
@JsonInclude(Include.NON_NULL) //忽略  null字段

方式2:根據須要本身在代碼中忽略相應的字段  須要引入json-libspa

效果:.net

實現方式:插件

引入:jar3d

        <!--json-lib依賴 -->
                <dependency>
                    <groupId>net.sf.json-lib</groupId>
                    <artifactId>json-lib</artifactId>
                    <version>2.4</version>
                    <classifier>jdk15</classifier>
                </dependency>

 

代碼中:xml

    @RequestMapping("/objectToJson3")
    public void objectToJson3(HttpServletResponse response) throws IOException{
        
        //設置響應編碼格式
        response.setContentType("text/html; charset=utf-8");
        
        //------------封裝數據------------開始-----------------
        User2 u = new  User2();//
        //u.setId(2l);
        u.setName("李四");
        u.setDescr("jsonson 配合json-lib 使用 ");
        u.setOther("json-lib 忽略 不須要的字段");
        
        //------------封裝數據------------結束-----------------
        //--------------------json-lib處理數據--開始------------------------------------------------
        JsonConfig jsonConfig = new JsonConfig();//import net.sf.json.JsonConfig;
        jsonConfig.setExcludes(new String[] {"name","descr"});
        JSONArray jsonArray = JSONArray.fromObject(u, jsonConfig);//import net.sf.json.JSONArray;
        //--------------------json-lib處理數據--結束------------------------------------------------

        ObjectMapper mapper=new ObjectMapper();
        String jsonData = mapper.writeValueAsString(jsonArray);
        
        
        PrintWriter out = response.getWriter();
        out.write(jsonData);
        out.flush();
        out.close();
    }

 

2.3 list 轉 json

效果

方式:

    //jackson的核心,經過mapper來進行序列化和反序列化
        ObjectMapper mapper=new ObjectMapper();
        //序列化,write相關方法!write能夠是序列化輸出多種格式,固然這邊最經常使用就是寫成爲String返回前端
        String jsonData = mapper.writeValueAsString(list);
        

 

2.4 map 轉json

 

 

2.4 json轉對象

2.5 json轉集合

    
        List<User3> resultList = mapper.readValue(jsonData, new TypeReference<List<User3>>(){});

2.6 賦值json轉對象

2.6.1 對象中含有對象

 

 

User4 user4 = mapper.readValue(jsonData, User4.class); // 簡單方式

2.6.2   對象的屬性是集合

 

 

相關文章
相關標籤/搜索