博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON数据之使用Fastjson进行解析(一)
阅读量:6343 次
发布时间:2019-06-22

本文共 4175 字,大约阅读时间需要 13 分钟。

据说FastJson是目前最快的解析Json数据的库,而且是国人开发出来的开源库。顶一下,付上官方网址:http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=2424946

要使用Fastjson,首先需要下载相对应的jar文件,在官网即可下载。
附上初学的第一个例子,多多指教:

{    "statuses":[        {         "id": 912345678901,         "text": "How do I stream JSON in Java?",         "geo": null,         "user": {        "name": "json_newb",        "followers_count": 41              }          },                  {         "id": 777777777888,         "text": "dfngsdnglnsldfnsl",         "geo": null,         "user": {        "name": "dsfgpd",        "followers_count": 24              }          }     ]}

AllBean的Bean类:

package com.lee.JsonToBean;public class AllBean {    private long id;    private String text;    private String geo;    private UserBean userBean;    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getText() {        return text;    }    public void setText(String text) {        this.text = text;    }    public String getGeo() {        return geo;    }    public void setGeo(String geo) {        this.geo = geo;    }    public UserBean getUserBean() {        return userBean;    }    public void setUserBean(UserBean userBean) {        this.userBean = userBean;    }    }

UserBean的Bean类:

package com.lee.JsonToBean;public class UserBean {    private String name;    private int followers_count;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getFollowers_count() {        return followers_count;    }    public void setFollowers_count(int followers_count) {        this.followers_count = followers_count;    }}

解析类JsonBean:

package com.lee.JsonToBean;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.List;import javax.swing.text.BadLocationException;import javax.swing.text.DefaultStyledDocument;import javax.swing.text.rtf.RTFEditorKit;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;/** * {    "statuses":[        {         "id": 912345678901,         "text": "How do I stream JSON in Java?",         "geo": null,         "user": {        "name": "json_newb",        "followers_count": 41              }          },                  {         "id": 777777777888,         "text": "dfngsdnglnsldfnsl",         "geo": null,         "user": {        "name": "dsfgpd",        "followers_count": 24              }          }     ]}  * */public class JsonBean {    RTFEditorKit rtf;    DefaultStyledDocument dsd;    String text;    public static void main(String[] args) {        JsonBean bean = new JsonBean();        // 把字符串转为Json对象,这是因为我的json数据首先是json对象        JSONObject jobj = JSON.parseObject(bean.readRtf(new File("json.rtf")));        // 然后是jsonArray,可以根据我的json数据知道        JSONArray arr = jobj.getJSONArray("statuses");        // 根据Bean类的到每一个json数组的项        List
listBeans = JSON.parseArray(arr.toString(), AllBean.class); // 遍历 for(AllBean bean_ : listBeans){ // 我这个demo的json数据获得第一层的数据 System.out.println(bean_.getText()); System.out.println(bean_.getId()); // 我这个demo的json数据获得第二层的数据 System.out.println(bean_.getUserBean().getFollowers_count()); } } // 因为我把json数据放进rtf文件,这是读取rtf文件的json数据,转化为字符串 public String readRtf(File in) { rtf=new RTFEditorKit(); dsd=new DefaultStyledDocument(); try { rtf.read(new FileInputStream(in), dsd, 0); text = new String(dsd.getText(0, dsd.getLength())); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BadLocationException e) { // TODO Auto-generated catch block e.printStackTrace(); } return text; } }

最后,附上程序代码:

 

from: http://www.cnblogs.com/lee0oo0/archive/2013/05/08/3066371.html

你可能感兴趣的文章
数据结构C++(10)二叉树——链表实现(linkBinaryTree)
查看>>
利用Condition实现多线程交替执行
查看>>
里氏替换原则(设计模式原则2)
查看>>
lamp一键安装
查看>>
解决“iOS 7 app自动更新,无法在app中向用户展示更新内容”问题
查看>>
OpenCV——Haar-like特征
查看>>
HttpWebResponse发送post请求并接收
查看>>
python 相对路径和绝对路径的区别
查看>>
Day36 python基础--并发编程基础5
查看>>
《Python从小白到大牛》第6章 数据类型
查看>>
三层架构的是与非
查看>>
lucene bug的报告经历
查看>>
火狐访问HTTPS网站显示连接不安全的解决方法
查看>>
防火墙(一)主机型防火墙
查看>>
基于哈夫曼编码的压缩算法的实现
查看>>
TCP长连接与短连接的区别
查看>>
sed tr
查看>>
FTP文件传输服务器(详解)
查看>>
ERROR OGG-01172 Discard file (/oradata/gglog/repl.dsc) exceeded max bytes (500000000).
查看>>
Activiti 实战篇 小试牛刀
查看>>