赞
踩
User:
package com.naihe; public class User { private String name; private int age; public User() { } public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Demo:
package com.naihe; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; public class FS { public static void main(String[] args) { User user1 = new User("小李",10); String JsStr1= JSONObject.toJSONString(user1); System.out.println(JsStr1); User user2 = new User("大李",100); String JsStr2= JSONObject.toJSONString(user2, SerializerFeature.WriteClassName); System.out.println(JsStr2); String str = "{\"@type\":\"com.naihe.User\",\"age\":1000,\"name\":\"老李\"}"; Object obj1 = JSONObject.parse(str); System.out.println(obj1); Object obj2 = JSONObject.parseObject(str); System.out.println(obj2); } }
由于fastjson调试起来过程比较复杂,在这里直接看关键点:
首先会获取字符串的第一对引号中的内容
如果内容为@type就会加载下一对引号中的类
在JavaBeanInfo.class中会获取类中所有详细详细
在这里匹配以set开头的方法
这里判断函数名长度大于4,且以set开头,非静态函数,返回类型为void或当前类参数个数为1个的方法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。