JSON 之FastJson解析

来源:互联网 发布:警察局里有编程的吗 编辑:程序博客网 时间:2024/04/25 22:43

原文地址:http://blog.sina.com.cn/s/blog_7ffb8dd501013qas.html


 一、阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在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。

二、FastJson解析JSON步骤
 
   A、服务器端将数据转换成json字符串
      首先、服务器端项目要导入阿里巴巴的fastjson的jar包至builtPath路径下(这些可以到fastjson官网下载:http://code.alibabatech.com/wiki/display/FastJSON/Home-zh)

然后将数据转为json字符串,核心函数是:

public static String createJsonString(Object value)    {        String alibabaJson = JSON.toJSONString(value);        return alibabaJson;    }

B、客户端将json字符串转换为相应的javaBean
  首先客户端也要导入fastjson的两个jar包
1、客户端获取json字符串
public class HttpUtil{       public static String getJsonContent(String urlStr)    {        try        {// 获取HttpURLConnection连接对象            URL url = new URL(urlStr);            HttpURLConnection httpConn = (HttpURLConnection) url                    .openConnection();            // 设置连接属性            httpConn.setConnectTimeout(3000);            httpConn.setDoInput(true);            httpConn.setRequestMethod("GET");            // 获取相应码            int respCode = httpConn.getResponseCode();            if (respCode == 200)            {                return ConvertStream2Json(httpConn.getInputStream());            }        }        catch (MalformedURLException e)        {            // TODO Auto-generated catch block            e.printStackTrace();        }        catch (IOException e)        {            // TODO Auto-generated catch block            e.printStackTrace();        }        return "";    }       private static String ConvertStream2Json(InputStream inputStream)    {        String jsonStr = "";        // ByteArrayOutputStream相当于内存输出流        ByteArrayOutputStream out = new ByteArrayOutputStream();        byte[] buffer = new byte[1024];        int len = 0;        // 将输入流转移到内存输出流中        try        {            while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)            {                out.write(buffer, 0, len);            }            // 将内存流转换为字符串            jsonStr = new String(out.toByteArray());        }        catch (IOException e)        {            // TODO Auto-generated catch block            e.printStackTrace();        }        return jsonStr;    }}2、使用泛型获取javaBean(核心函数)    public static T getPerson(String jsonString, Class cls) {        T t = null;        try {            t = JSON.parseObject(jsonString, cls);        } catch (Exception e) {            // TODO: handle exception        }        return t;    }public static List getPersons(String jsonString, Class cls) {        List list = new ArrayList();        try {            list = JSON.parseArray(jsonString, cls);        } catch (Exception e) {        }        return list;    }public static List> listKeyMaps(String jsonString) {        List> list = new ArrayList>();        try {            list = JSON.parseObject(jsonString,                    new TypeReference>>() {            });        } catch (Exception e) {            // TODO: handle exception        }        return list;    }


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子撒谎抄作业怎么办 孩子不肯做作业怎么办? 同桌抄我答案怎么办 初中孩子抄作业怎么办 小孩子做题马虎怎么办 数学做题马虎怎么办 小朋友做题粗心怎么办 孩子老是落题怎么办 脑子笨反应慢怎么办 脑子笨的人怎么办 孩子学习反应慢怎么办 孩子学习不入门怎么办 高三出现厌学怎么办 天生笨的人怎么办 学生考试粗心该怎么办 高三学生失眠怎么办 期末考试考差了怎么办 小孩考试太粗心怎么办 带孩子太粗心怎么办 小孩做数学粗心怎么办 小学一年级学生厌学怎么办 小学二年级厌学怎么办 做题做的烦躁了怎么办 英语不会做题怎么办 孩子审题不细心怎么办 生孩子有恐惧症怎么办 小孩不喜欢上幼儿园怎么办 小孩不喜欢去幼儿园怎么办 小孩不喜欢学生字怎么办 学生不喜欢补课老师怎么办 小孩不喜欢上学逃课怎么办 一年级小朋友不爱写字怎么办 幼儿园小朋友不爱写字怎么办 孩子懒散不积极怎么办 孩子不肯上幼儿园怎么办 孩子不肯去幼儿园怎么办 小孩记不住字怎么办 小孩不会写字要怎么办 一年级孩子不爱写字怎么办 一年级小孩不爱写字怎么办 孩子不爱写字怎么办呢