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

  • 相关阅读:
    当函数中传递的参数数量不定时,获取传递给函数的参数信息
    redis分页摘抄
    redis分页
    返回数组中指定的一列,将键值作为元素键名array_column
    PHP操作Redis常用技巧总结
    php面试中的经典问题
    php 依赖注入的实现
    10分钟快速理解依赖注入
    PHP 依赖注入,依赖反转 (IOC-DI)
    PHP控制反转(IOC)和依赖注入(DI)
  • 原文地址:https://www.cnblogs.com/lz2017/p/6974119.html
Copyright © 2020-2023  润新知