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

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

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

但是我在实际使用过程中还是发现了一些值得注意的地方,比如说:之前写过的JQuery解析FastJSON生成的JSON数据会出现的错误

今天我要记录下一些注意点

将对象转化为json字符串时,如何过滤掉部分字段?

方法一:

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

  1. @JSONField(serialize=false)
  2. private String userName;

方法二:

在需要生成JSON的时候使用fastjson的过滤器

  1. PropertyFilter profilter = new PropertyFilter(){
  2.  
  3. @Override
  4. public boolean apply(Object object, String name, Object value) {
  5. if(name.equalsIgnoreCase("age")){
  6. //false表示age字段将被排除在外
  7. return false;
  8. }
  9. return true;
  10. }
  11.  
  12. };
  13. json = JSON.toJSONString(user, profilter);
  14. System.out.println(json);

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

格式化日期时间

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

还是在JavaBean的日期时间字段使用注解

  1. //通过注解对日期转化为JSON进行格式化
  2. @JSONField (format="yyyy-MM-dd HH:mm:ss")
  3. private Date date;

解析JSON

fastJSON也可以将JSON解析为所对应的JavaBean,使用的是JSON类的parseObject静态方法。

我在src下放入一段JSON数据:

  1. {
  2. "userName":"lz",
  3. "password":"321",
  4. "birthday":"2017-07-29 13:50:22",
  5. "jineng":[
  6. "Struts2","springMVC"
  7. ]
  8. }

并写好对应的JavaBean,在JavaBean中jineng属性使用的List集合

测试的方法:

  1. @Test
  2. public void fun4() throws Exception{
  3. String path = MyTest.class.getResource("/test.json").getFile();
  4. File file=new File(path);
  5. String json = FileUtils.readFileToString(file);
  6. User user=JSON.parseObject(json, User.class);
  7.  
  8. System.out.println(user.getJineng());
  9. System.out.println(user.getJineng().getClass());
  10.  
  11. }

输出结果:

  1. [Struts2, springMVC]
  2. class java.util.ArrayList

最终fastJSON将数据封装到JavaBean中,同时也完成了对集合属性的具体化

FastJSON使用笔记的更多相关文章

  1. Json,Gson,FastJson解析笔记

    Json,Gson,FastJson解析笔记 1.将JavaBean转换成Json对象: public static String CreatJsonFromObject(Object key,Obj ...

  2. fastjson学习笔记

    先来说说什么是 JSON 吧. JSON:JavaScript对象表示法(JavaScript Object Notation).JSON 是存储和交换文本信息的语法.JSON 语法是 JavaScr ...

  3. fastjson 使用笔记

    1.string转json String params={'key1':'50001','key2':10007700'}Map<String, String> a = JSON.pars ...

  4. Spring MVC-学习笔记(3)参数绑定注解、HttpMessageConverter<T>信息转换、jackson、fastjson、XML

    1.参数绑定注解 1>@RequestParam: 用于将指定的请求参数赋值给方法中的指定参数.支持的属性: 2>@PathVariable:可以方便的获得URL中的动态参数,只支持一个属 ...

  5. FastJson远程命令执行漏洞学习笔记

    FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...

  6. Android进阶笔记17:3种JSON解析工具(org.json、fastjson、gson)

    一. 目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),其中解析速度最快的是Gson. 3种json工具下 ...

  7. SpringBoot入门笔记(二)、使用fastjson

    1.添加fastjson配置 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastj ...

  8. SpringBoot笔记--FastJson

    FastJson配置 ObjectId class ObjectIdSerializer : ObjectSerializer { override fun write(serializer: JSO ...

  9. fastjson 反序列化漏洞笔记,比较乱

    现在思路还是有点乱,希望后面能重新写 先上pon.xml 包 <?xml version="1.0" encoding="UTF-8"?> < ...

随机推荐

  1. L148

    You don't know about real loss, because that only occurs when you love something more than you love ...

  2. 移动设备web开发插件iScroll的使用详解

    地址:http://blog.nnnv.cn/index.php/archives/65

  3. Java跨平台的原理--java跨平台是通过JVM实现的

    孙鑫视频---笔记(1-3) java跨平台是通过JVM(java 虚拟机)实现的. Java应用程序的开发周期: 编译.下载.解释.执行. 1.java源文件的编译过程 java编译程序将java源 ...

  4. Java并发编程之读写锁

    读写锁维护了一对相关的锁,一个用于只读操作,一个用于写入操作.只要没有writer,读取锁可以由多个reader线程同时保持.写入锁是独占的. 可重入读写锁 ReentrantReadWriteLoc ...

  5. 激活函数之softmax介绍及C++实现

    下溢(underflow):当接近零的数被四舍五入为零时发生下溢.许多函数在其参数为零而不是一个很小的正数时才会表现出质的不同.例如,我们通常要避免被零除或避免取零的对数. 上溢(overflow): ...

  6. Vim技能修炼教程(5) - 操作符实务

    操作符实务 操作符复习 上次我们讲了操作符与文本对象的组合这样一个vim的强大功能.但是上节的知识点过于密集,可读性可能差了一点.不过没关系,重要的知识点在后面用到的时候我们可以先复习一下. 我们还是 ...

  7. C# http post上传文件

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  8. MySQL存储引擎(engine:处理表的处理器)

    1.基本的操作命令: 1.查看所有存储引擎 show engines: 2.查看已有表的存储引擎: show create table 表名: 3.创建表指定的存储引擎 create table 表名 ...

  9. my_itoa

    #include <iostream> using namespace std; char *my_reverse(char* s) { char *p,*q; p=s;q=s; whil ...

  10. 【解题报告】13级个人结业赛(二) ——动(dou)态(bu)规(hui)划(zuo)专场

    额.果然是动(dou)态(bu)规(hui)划(zuo)专场... A: 翻倍序列 dp[i][j]表示第i个位置是j的情况的个数那么dp[i][j]=∑dp[i-1][k]   (j%k==0)初始 ...