zoukankan      html  css  js  c++  java
  • FastJSON使用笔记

    虽然使用FastJSON来生成JSON数据非常简单

    最常用的的方法就是JSON.toJSONString()静态方法,这个方法参数可以给一个String,也可以是一个int,也可以给一个Object类型(包括集合数组),也可以是一个JavaBean 等等,说明其存在多个重载方法

            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字符串时,如何过滤掉部分字段?

    方法一:

    在JavaBean对象对应字段前加注解,这样生成的json也不包含该字段

    @JSONField(serialize=false)  
    private String userName;  

    方法二:

    在需要生成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); 

    我个人推荐使用第二种,虽然代码多了些,但是如果出现该字段有需要不进行过滤的情况,就不太灵活了

    格式化日期时间

    再将数据库中的日期时间生成JSON的时候,可能会出现以毫秒或者是格式不一致的问题,应该如何指定使用的日期时间格式?就要使用@JSONField注解中的format属性了

    还是在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中,同时也完成了对集合属性的具体化

  • 相关阅读:
    Pytorch cpu版离线安装:win10 + Anaconda + Pip
    离线配置Opencv-python: Anaconda3 + Pycharm+ Win10 + Python3.6
    HSmartWindowControl 之 摄像头实时显示( 使用 WPF )
    OpencvSharp 在WPF的Image控件中显示图像
    HSmartWindowControl 之 显示图像
    HSmartWindowControl之安装篇 (Visual Studio 2013 & Halcon 18)
    使用ILMerge 打包C# 绿色免安装版程序
    C# 日志输出工具库—log4net 安装、配置及简单应用
    Python:windows下scikit-learn 安装和更新
    C# 开源仪表盘库—Agauge App
  • 原文地址:https://www.cnblogs.com/lz2017/p/6974119.html
Copyright © 2011-2022 走看看