网络访问之json数据解析
来源:互联网 发布:淘宝申请全球购的条件 编辑:程序博客网 时间:2024/06/10 15:11
在绝大多数的情况下,在访问服务端的数据时候,服务端往往会返回一大堆的json数据给我们,如何又快又准确的解析这些数据并将之展示在界面上就显得非常重要了。
我们可以选择JSONObjec 来解析,但是针对一些复杂的数据,推荐使用第三方工具fastjson或是 gson来解析。但是在用这些jar包之前,最为关键的一点是:如何正确的将数据封装成javabean。
现拿已碰到过的2种复杂json数据做说明来封装成bean和解析。
所用到的资源:1.fastjson 或是gson 2.HiJson
先看第一种已经格式化的json数据截图:
news中间还有许多个对象,不过被我简化了,只留了一个对象。现开始从内到外解析:javebean中的代码如下:
public class PictureData { public PicDataItem data = new PicDataItem(); public String retcode; public class PicDataItem { public String countcommenturl; public String more; public String title; public ArrayList<PicNewItem> news = new ArrayList<PicNewItem>(); public ArrayList<String> topic = new ArrayList<String>(); } public class PicNewItem { public boolean comment; public String commentlist; public String commenturl; public String id; public String largeimage; public String listimage; public String pubdate; public String smallimage; public String title; public String type; public String url; }}
bean数据封装好之后,开始解析:
@Override protected void initData() { // 访问网络获取相关的数据 String url = HttpUtil.HOST + HttpUtil.PICTURE; HttpUtils httpUtils = new HttpUtils(); RequestCallBack<String> callBack = new MyRequestCallBack(); httpUtils.send(HttpMethod.GET, url, callBack); } class MyRequestCallBack extends RequestCallBack<String> { @Override public void onSuccess(ResponseInfo<String> responseInfo) { // 访问网络成功的时候:开始解析数据: String json = responseInfo.result; LogUtil.i("hxy", json); // 对网络获取的数据开始进行解析 Gson gson = new Gson(); PictureData data = gson.fromJson(json, PictureData.class); // 当用fastjson 解析json数据的时候: //PictureData data= JSON.parseObject(json,PictureData.class);
第二种复杂数据的解析:
先看服务端返回的数据:
这里的数据和第一种数据有所不同,因为”data“之后紧接的是数字3或是4之类的。其实这是一种集合数据:
先看以下测试代码:
public class Test { public static void main(String[] args) { HashMap<String,String> map = new HashMap<String, String>(); map.put("1", "电视"); map.put("2", "冰箱"); map.put("3", "空调"); map.put("4", "洗衣机"); map.put("5", "热水器"); //转化为json数据: String json = JSON.toJSONString(map); System.out.println(json); }}
打印输出的结果:
{"3":"空调","2":"冰箱","1":"电视","5":"热水器","4":"洗衣机"}
所以可以推出:服务端中的数据是以HashMap返回来的,所以封装成如下bean:
public class BuyGoosData { public int number; public double sumPrice; public HashMap<String,CartItem> data = new HashMap<String,CartItem>(); public static class CartItem{ public GoodsItem good = new GoodsItem(); public int number; public double price; }}
再运用第三方jar包解析即可,步骤和第一种数据的解析步骤相同。
0 0
- 网络访问之json数据解析
- 访问网络数据+json解析代码片段
- 网络数据传递之 Json数据解析
- Android 之 网络访问服务器,解析JSON数据(返回无乱码)
- Android 网络获取数据之Json解析
- 在retrofit访问网络返回json数据添加解析器
- Android中级之网络数据解析一之Json解析
- 网络通信框架Volley之二——访问服务器获取Json.xml数据和详细的解析数据
- HTTP 网络访问/JSON 解析
- iOS开发: 网络解析数据之JSON解析
- Android访问网络系列之--服务端返回XML或JSON格式数据,Android 进行解析并显示
- http 访问网络 返回json 解析json
- 数据解析之JSON
- iOS多线程与网络开发之解析json数据
- iOS学习笔记之网络篇数据解析(JSON/XML)
- 网络下的数据传输之Json数据的解析
- Android之网络编程(四)解析 JSON 格式数据
- android网络编程之json传输数据以及解析方式
- SRVCC流程
- 关于编码风格
- KD树 (k-Dimension tree)
- hadoop自定义排序
- 06-图3 六度空间
- 网络访问之json数据解析
- Spring Web mvc Maven实现文件上传
- DButils工具类库的使用
- js encodeURIComponent()和encodeURI()区别
- Spring学习4--登录示例
- 算数-偶数和基数
- Spinner使用自定义适配器
- iOS NsSession http请求错误
- 通信协议制定