FastJson

来源:互联网 发布:怎么找淘宝内购优惠券 编辑:程序博客网 时间:2024/06/10 00:44

今天初步学习了Json,记录一下吧:

这次接触的Json是由Alibaba开发的基于Java的JSON处理器,主要特点是解析速度快

FastJson的入口:com.alibaba.fastjson.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集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
//此外,还有一个转换为bean对象数组的方法
<pre name="code" class="java">public static final Object <span style="font-family: Arial, Helvetica, sans-serif;">parseObject(JsonString, new TypeReference<VIPHuodong[]>(){})</span>


今天给豆果数据管理平台增加了一个新功能:获取VIP用户的参加过的活动数据,这个活动数据是存储在另一个数据库中的表,配置2个以上数据库上一篇有讲。

用户活动数据在数据库中以Json数据的方式存在:

[{"title":"u738bu7476u6d4bu8bd5u4e13u7528","address":"u7684","id":"23"},{"title":"u82cfu6ccau5c1424CMu597du5e2eu624bTu578bu538bu529bu9505","address":"u7684","id":"4"},{"title":"u8bd5u7528u6d4bu8bd5u554a----","address":"djqiqofp","id":"22"},{"title":"u3010u6d4bu8bd5u4e0du8981u4feeu6539u3011u677eu4e0bu56dbu795eu5668","address":"u53c8u6765u62a5u540du4e86","id":"31"},{"title":"fsdfdsf","address":"u7684u5de5u5546u5730u65b9u516cu53f8","id":"63"},{"title":"","address":"1u4eb2u6253u7b97u53d1u5676u6253u53d1u4f3cu7684","id":"65"},{"title":"","address":";ladsj;ladf","id":"125"},{"title":"","address":"dfgsdfg","id":"133"}]
于是呢,我重新定义一个bean,用来存储这些数据:

@SuppressWarnings("serial")public class VIPHuodong implements Serializable {    private int id;    private String address;    private String title;    public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}        }
将数据从数据库中取出来,但是取出来的是String类型的数据,这时候就需要fastJson来转换了:

//获取特定用户的活动内容    public List<?> getVipUserHuodong(int userid){    Object[] parms = new Object[]{userid};        List<VIPUserHuodong> list = dgDataJdbcTemplate.query(queryUserHuodong, parms, new VIPUserHuodongRowMapper());        if(0 == list.size()){        return new ArrayList<String>() ;        } else {        VIPUserHuodong vipUserHuodong = list.get(0) ;        String JsonString = vipUserHuodong.getContent() ;        VIPHuodong[] vipHuodong = JSON.parseObject(JsonString, new TypeReference<VIPHuodong[]>(){}) ;        List<?> huodongList = Arrays.asList(vipHuodong) ;        System.out.println(huodongList);        return huodongList ;        }    }
这边返回的是一个bean类型的数组,再调用array类的asList方法转换为List集合,这样一来就能把这个list发送给前台,通过JSTL表达式的foreach来遍历他了


目前就了解了这么多,后续再补充 (@DATE 17:50 8/2/2016 , 来豆果的第12天,收获很多~)



0 0