FastJSON使用筆記

雖然使用FastJSON來生成JSON數據很是簡單java

最經常使用的的方法就是JSON.toJSONString()靜態方法,這個方法參數能夠給一個String,也能夠是一個int,也能夠給一個Object類型(包括集合數組),也能夠是一個JavaBean 等等,說明其存在多個重載方法spring

        Admin admin2=adminService.findByName(admin.getAdminName());
        
        String json = JSON.toJSONString(admin2);
        ServletActionContext.getResponse().setContentType("application/json;charset=utf-8");
        ServletActionContext.getResponse().getWriter().write(json);
        
        return NONE; 

可是我在實際使用過程當中仍是發現了一些值得注意的地方,好比說:以前寫過的JQuery解析FastJSON生成的JSON數據會出現的錯誤數據庫

今天我要記錄下一些注意點json

將對象轉化爲json字符串時,如何過濾掉部分字段?

方法一:數組

在JavaBean對象對應字段前加註解,這樣生成的json也不包含該字段app

@JSONField(serialize=false)  
private String userName;  

方法二:ide

在須要生成JSON的時候使用fastjson的過濾器測試

PropertyFilter profilter = new PropertyFilter(){  
  
            @Override  
            public boolean apply(Object object, String name, Object value) {  
                if(name.equalsIgnoreCase("age")){  
                    //false表示age字段將被排除在外  
                    return false;  
                }  
                return true;  
            }  
              
        };  
        json = JSON.toJSONString(user, profilter);  
        System.out.println(json); 

我我的推薦使用第二種,雖然代碼多了些,可是若是出現該字段有須要不進行過濾的狀況,就不太靈活了spa

格式化日期時間

再將數據庫中的日期時間生成JSON的時候,可能會出現以毫秒或者是格式不一致的問題,應該如何指定使用的日期時間格式?就要使用@JSONField註解中的format屬性了code

仍是在JavaBean的日期時間字段使用註解

    //經過註解對日期轉化爲JSON進行格式化
    @JSONField (format="yyyy-MM-dd HH:mm:ss")  
    private Date date;

 解析JSON

fastJSON也能夠將JSON解析爲所對應的JavaBean,使用的是JSON類的parseObject靜態方法。

我在src下放入一段JSON數據:

{
  "userName":"lz",
  "password":"321",
  "birthday":"2017-07-29 13:50:22",
  "jineng":[
     "Struts2","springMVC"
  ]
}

並寫好對應的JavaBean,在JavaBean中jineng屬性使用的List集合

測試的方法:

@Test
    public void fun4() throws Exception{
        String path = MyTest.class.getResource("/test.json").getFile();
        File file=new File(path);
        String json = FileUtils.readFileToString(file);
        User user=JSON.parseObject(json, User.class);

        System.out.println(user.getJineng());
        System.out.println(user.getJineng().getClass());


    }

輸出結果:

[Struts2, springMVC]
class java.util.ArrayList

最終fastJSON將數據封裝到JavaBean中,同時也完成了對集合屬性的具體化

相關文章
相關標籤/搜索