FastJson如何应用于复杂长尾词数据的转换与解析?

2026-04-16 14:224阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计831个文字,预计阅读时间需要4分钟。

FastJson如何应用于复杂长尾词数据的转换与解析?

FastJson与JavaBean之间的转换主要涉及以下方法:

FastJson如何应用于复杂长尾词数据的转换与解析?

javapublic static final Object toJSON(Object javaObject);// 将JavaBean转换为JSONObject或JSONArray

FastJson与JavaBean之间的转换

FastJson来源于com.alibaba.fastjon.JSON,以下的方法都是序列化操作的静态方法. public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray public static final String toJSONString(Object javaObject); //将JavaBean序列化为JSON文本 public static final Object parse(String text); //把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); //把JSON文本parse成JSONObject public static final T parseObject(String text, Class clazz); //把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); //把JSON文本parse成JSONArray public static final List parseArray(String text, Class clazz);//把JSON文本parse成JavaBean集合 JSON与JAVA的对应关系: SerializeWriter:相当于StringBuffer JSONArray:相当于List JSONObject:相当于Map JSON反序列化没有真正数组,本质类型都是List 在项目中的应用 @RequestMapping(value = "/obtainTheSpecifiedRangePark") public ModelAndView obtainTheSpecifiedRangePark(double lng,double lat,String cityName ){ String cityname="深圳"; // 获取可预订的停车场列表 List infoList = parkingCarService.obtainRangePark(lng,lat,cityname); HashMap params = new HashMap (); params.put("infoList", infoList); //将JavaBean转换为JSONObject或者JSONArray。 //params是Map类型的JavaBean,调用toJSON方法,将JavaBean转换为JSONObject或者JSONArray String result=JSON.toJSON(params).toString(); return new ModelAndView(new JsonView(result)); } 从github上获取FastJson的样例: (1)Group.java import java.util.ArrayList; import java.util.List; public class Group { private Long id; private String name; private List userss = new ArrayList (); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getUserss() { return userss; } public void setUserss(List userss) { this.userss = userss; } public void addUser(User user) { userss.add(user); } } (2)User.java public class User { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } (3)Main.java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class Main { public static void main(String[] args) { Group group = new Group(); group.setId(0L); group.setName("admin"); User guestUser = new User(); guestUser.setId(2L); guestUser.setName("guest"); User rootUser = new User(); rootUser.setId(3L); rootUser.setName("root"); group.addUser(guestUser); group.addUser(rootUser); String jsonString = JSON.toJSONString(group); System.out.println(jsonString); } } 得到结果: {"id":0,"name":"admin","userss":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]} FastJson最主要的API是序列化JSON.toJSONString 和反序列化parseObject 一: 标准的JSON是使用双引号的,javascript支持使用单引号格式的json文本,fastjson也支持这个特性.如下: String jsonString = JSON.toJSONString(group, SerializerFeature.UseSingleQuotes); 得到结果: {'id':0,'name':'admin','userss':[{'id':2,'name':'guest'},{'id':3,'name':'root'}]} 二: 日期格式化: FastJson直接支持日期类型数据的格式化,包括java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time 缺省情况下,fastjson将Date类型序列化为long,例如: System.out.println(jsonString); long millis = 1324138987429L; Date date = new Date(millis); System.out.println(JSON.toJSONString(date)); 结果是: 1324138987429 三: FastJson格式化日期的方式,如下: System.out.println(JSON.toJSONString(date,SerializerFeature.WriteDateUseDateFormat)); 结果是: "2011-12-18 00:23:07" 指定输出日期的格式,毫秒级: System.out.println(JSON.toJSONStringWithDateFormat(date,"yyyy-MM-dd HH:mm:ss.SSS")); 结果是: "2011-12-18 00:23:07.429" 四: 使用WriteClassName特性,序列化时写入类型信息 String text = JSON.toJSONString(group, SerializerFeature.WriteClassName); System.out.println(text); 结果是: {"@type":"Group","id":0,"name":"admin","userss":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]} 五: 使用@JSONField定制序列化输出,例如: 希望序列化采用之后采用"ID",而不是"id",你可以使用@JSONField这个Annotation public class User { @JSONField(name="ID") private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 结果是: {'id':0,'name':'admin','userss':[{'ID':2,'name':'guest'},{'ID':3,'name':'root'}]} 六: 反序列化:是把JSON格式的文本转化为JavaBean对象 指定class信息反序列化 Group parseObject = JSON.parseObject(text,Group.class); System.out.println(parseObject); 结果是: Group@79f9805f 七: 集合的反序列化:类似parseObject,使用的是parseArray String text = [{ ... }, { ... }]; List users = JSON.parseArray(text, User.class); 八: 泛型的反序列化:如果需要返回一个带泛型的对象,例如List 、Map ,可以使用TypeReference来传入类型信息 String text = {"name":{"name":"ljw",age:18}}; Map userMap = JSON.parseObject(text, new TypeReference >() {});

本文共计831个文字,预计阅读时间需要4分钟。

FastJson如何应用于复杂长尾词数据的转换与解析?

FastJson与JavaBean之间的转换主要涉及以下方法:

FastJson如何应用于复杂长尾词数据的转换与解析?

javapublic static final Object toJSON(Object javaObject);// 将JavaBean转换为JSONObject或JSONArray

FastJson与JavaBean之间的转换

FastJson来源于com.alibaba.fastjon.JSON,以下的方法都是序列化操作的静态方法. public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray public static final String toJSONString(Object javaObject); //将JavaBean序列化为JSON文本 public static final Object parse(String text); //把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); //把JSON文本parse成JSONObject public static final T parseObject(String text, Class clazz); //把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); //把JSON文本parse成JSONArray public static final List parseArray(String text, Class clazz);//把JSON文本parse成JavaBean集合 JSON与JAVA的对应关系: SerializeWriter:相当于StringBuffer JSONArray:相当于List JSONObject:相当于Map JSON反序列化没有真正数组,本质类型都是List 在项目中的应用 @RequestMapping(value = "/obtainTheSpecifiedRangePark") public ModelAndView obtainTheSpecifiedRangePark(double lng,double lat,String cityName ){ String cityname="深圳"; // 获取可预订的停车场列表 List infoList = parkingCarService.obtainRangePark(lng,lat,cityname); HashMap params = new HashMap (); params.put("infoList", infoList); //将JavaBean转换为JSONObject或者JSONArray。 //params是Map类型的JavaBean,调用toJSON方法,将JavaBean转换为JSONObject或者JSONArray String result=JSON.toJSON(params).toString(); return new ModelAndView(new JsonView(result)); } 从github上获取FastJson的样例: (1)Group.java import java.util.ArrayList; import java.util.List; public class Group { private Long id; private String name; private List userss = new ArrayList (); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getUserss() { return userss; } public void setUserss(List userss) { this.userss = userss; } public void addUser(User user) { userss.add(user); } } (2)User.java public class User { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } (3)Main.java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class Main { public static void main(String[] args) { Group group = new Group(); group.setId(0L); group.setName("admin"); User guestUser = new User(); guestUser.setId(2L); guestUser.setName("guest"); User rootUser = new User(); rootUser.setId(3L); rootUser.setName("root"); group.addUser(guestUser); group.addUser(rootUser); String jsonString = JSON.toJSONString(group); System.out.println(jsonString); } } 得到结果: {"id":0,"name":"admin","userss":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]} FastJson最主要的API是序列化JSON.toJSONString 和反序列化parseObject 一: 标准的JSON是使用双引号的,javascript支持使用单引号格式的json文本,fastjson也支持这个特性.如下: String jsonString = JSON.toJSONString(group, SerializerFeature.UseSingleQuotes); 得到结果: {'id':0,'name':'admin','userss':[{'id':2,'name':'guest'},{'id':3,'name':'root'}]} 二: 日期格式化: FastJson直接支持日期类型数据的格式化,包括java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time 缺省情况下,fastjson将Date类型序列化为long,例如: System.out.println(jsonString); long millis = 1324138987429L; Date date = new Date(millis); System.out.println(JSON.toJSONString(date)); 结果是: 1324138987429 三: FastJson格式化日期的方式,如下: System.out.println(JSON.toJSONString(date,SerializerFeature.WriteDateUseDateFormat)); 结果是: "2011-12-18 00:23:07" 指定输出日期的格式,毫秒级: System.out.println(JSON.toJSONStringWithDateFormat(date,"yyyy-MM-dd HH:mm:ss.SSS")); 结果是: "2011-12-18 00:23:07.429" 四: 使用WriteClassName特性,序列化时写入类型信息 String text = JSON.toJSONString(group, SerializerFeature.WriteClassName); System.out.println(text); 结果是: {"@type":"Group","id":0,"name":"admin","userss":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]} 五: 使用@JSONField定制序列化输出,例如: 希望序列化采用之后采用"ID",而不是"id",你可以使用@JSONField这个Annotation public class User { @JSONField(name="ID") private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 结果是: {'id':0,'name':'admin','userss':[{'ID':2,'name':'guest'},{'ID':3,'name':'root'}]} 六: 反序列化:是把JSON格式的文本转化为JavaBean对象 指定class信息反序列化 Group parseObject = JSON.parseObject(text,Group.class); System.out.println(parseObject); 结果是: Group@79f9805f 七: 集合的反序列化:类似parseObject,使用的是parseArray String text = [{ ... }, { ... }]; List users = JSON.parseArray(text, User.class); 八: 泛型的反序列化:如果需要返回一个带泛型的对象,例如List 、Map ,可以使用TypeReference来传入类型信息 String text = {"name":{"name":"ljw",age:18}}; Map userMap = JSON.parseObject(text, new TypeReference >() {});