Android的本地Json解析
2015-07-27 13:20
441 查看
1、本地 取出需要解析的Json字符串 转化为UTF-8的格式 将字符串json转换为json对象 根据Json里面的key读取数据
//将json文件(存放在本地的res/raw)读取到buffer数组中 InputStream is = this.getResources().openRawResource(R.raw.getcart); byte[] buffer = new byte[is.available()]; is.read(buffer); // 将字符数组转换为UTF-8编码的字符串 String json = new String(buffer, "UTF-8"); 将字符串json转换为json对象,以便于取出数据 JSONObject jsonObject = new JSONObject(json); //解析info数组,解析中括号括起来的内容就表示一个数组,使用JSONArray对象解析 JSONObject objectInfo = jsonObject.getJSONObject("info"); JSONArray arraygroup = objectInfo.getJSONArray("group"); for (int i = 0; i < arraygroup.length(); i++) { ShopBean shopBean = new ShopBean(); JSONObject item = arraygroup.getJSONObject(i); int seller_uid = item.getInt("seller_uid"); String seller_name = item.getString("seller_name"); shopBean.setSeller_uid(seller_uid); shopBean.setSeller_name(seller_name); JSONArray arraygoods = item.getJSONArray("goods"); for (int j = 0; j < arraygoods.length(); j++) { JSONObject jtem = arraygoods.getJSONObject(j); int stock_id = jtem.getInt("stock_id"); String goods_name = jtem.getString("goods_name"); int qty = jtem.getInt("qty"); boolean is_choose = jtem.getBoolean("is_choose"); int price = jtem.getInt("price"); String goods_img = jtem.getString("goods_img"); String extend = jtem.getString("extend"); int stock_num = jtem.getInt("stock_num"); int goodsTotalPrice = jtem.getInt("goodsTotalPrice"); double rate = jtem.getDouble("rate"); //把商品的属性值添加到shop实体类中 shopBean.setStock_id(stock_id); shopBean.setGoods_name(goods_name); shopBean.setQty(qty); shopBean.setIs_choose(is_choose); shopBean.setPrice(price); shopBean.setGoods_img(goods_img); shopBean.setExtend(extend); shopBean.setStock_num(stock_num); shopBean.setGoodsTotalPrice(goodsTotalPrice); shopBean.setRate(rate); shopBeanList.add(shopBean); }另附: 定义的实体类为:
{ "info": { "group": [ { "seller_uid": "375", "seller_name": "wendy\u7f8e\u5986\u4e13\u8425\u5e97", "goods": [ { "stock_id": 6019447, "goods_name": "\u4e13\u67dc\u6b63\u54c1 \u9999\u5948\u513f \u9ec4\u8272\u9082\u9005\u9999\u6c34\u6da6\u4f53\u4e73\u8eab\u4f53\u971c200ml", "qty": 1, "is_choose": true, "price": 404, "goods_img": "http:\/\/sjshop.easyder.com\/res\/upload\/image\/100-100\/2d\/0f\/2d0fc9d2b4af836313243dc53e2e07e1.jpg", "extend": "", "stock_num": "3", "goodsTotalPrice": 404, "rate": 3.23 } ] }, { "seller_uid": "285", "seller_name": "\u4e13\u8425\u5e97", "goods": [ { "stock_id": 8773389, "goods_name": "[\u7279\u4ef7\u5305\u90ae]\u4e13\u67dc\u6b63\u54c1 \u897f\u57df\u7f8e\u519c \u590f\u679c\u6fb3\u6d32\u8fdb\u53e3\u96f6\u98df\u590f\u5a01\u5937\u679c\u575a\u679c\u98df\u54c1\u5976\u6cb9\u9999\u5473\u5e72\u679c\u96f6\u98df160g", "qty": 2, "is_choose": true, "price": 6.19, "goods_img": "http:\/\/sjshop.easyder.com\/res\/upload\/image\/100-100\/20\/b8\/20b89870c6babf6fb36565b7e501d58f.jpg", "extend": "", "stock_num": "4", "goodsTotalPrice": 12.38, "rate": 0.04 }, { "stock_id": 8655629, "goods_name": "\u4e13\u67dc\u6b63\u54c1 \u4e45\u7231 love\u60c5\u4fa3\u6212\u6307 925\u7eaf\u94f6\u5bf9\u6212\u5b50 \u745e\u58eb\u94bb\u9996\u9970\u54c1 \u514d\u8d39\u523b\u5b57", "qty": 2, "is_choose": true, "price": 99, "goods_img": "http:\/\/sjshop.easyder.com\/res\/upload\/image\/100-100\/0a\/91\/0a910ae6a7ca2f2081fe4e87928ae9df.jpg", "extend": "\u7537\u6b3e21\u53f7 ", "stock_num": "5", "goodsTotalPrice": 198, "rate": 3.17 } ] }, { "seller_uid": "1147", "seller_name": "\u4e0a\u6d77\u60a0\u8dc3\u5bb6\u5c45\u7528\u54c1\u6709\u9650\u516c\u53f8", "goods": [ { "stock_id": 8738701, "goods_name": "\u4e13\u67dc\u6b63\u54c1 \u8c61\u5370 \u5973\u58eb\u7537\u58eb\u513f\u7ae5\u4fdd\u6e29\u676f\u5b50\u65c5\u884c\u5fc5\u5907\u4fdd\u6e29\u6c34\u58f6 SF-CC18-XA 1800m", "qty": 3, "is_choose": true, "price": 539, "goods_img": "http:\/\/sjshop.easyder.com\/res\/upload\/image\/100-100\/65\/54\/65541e52cbfb7d187ac219bc96b2db68.jpg", "extend": "", "stock_num": "27", "goodsTotalPrice": 1617, "rate": 12.94 } ] }, { "seller_uid": "1093", "seller_name": "\u59da\u5e02\u7530\u91ce\u5851\u6599\u5236\u54c1\u6709\u9650\u516c\u53f8", "goods": [ { "stock_id": 8696621, "goods_name": "\u4e13\u67dc\u6b63\u54c1 \u5929\u548c\u7530\u91ce \u52a0\u539a\u94dd\u5408\u91d1\u843d\u5730\u6298\u53e0\u667e\u8863\u67b6 X\u578b\u7f6e\u5730\u9633\u53f0\u8863\u67b6 \u667e\u88ab\u67b6\u5305\u90ae", "qty": 2, "is_choose": true, "price": 188.65, "goods_img": "http:\/\/sjshop.easyder.com\/res\/upload\/image\/100-100\/d8\/ae\/d8ae683db4cdedf750ea7b4e713bfd1e.jpg", "extend": "\u91d1\u8272 ", "stock_num": "274", "goodsTotalPrice": 377.3, "rate": 3.02 } ] } ]}, "tips": "\u6210\u529f", "status": 1, "chooseGoodsNum": 10, "chooseGoodsTotalPrice": 2608.68, "allGoodsTotalPrice": 2608.68, "allGoodsNum": 10, "totalRate": 22.4 }View Code
相关文章推荐
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
- android:layout_gravity与android:gravity
- android牛人博客
- Android应用开发中,需要注意的一些事项
- android 控件水平布
- java代码中实现android背景选择的selector-StateListDrawable的应用
- android service startService与bindService的区别
- Android学习笔记之布局技巧以及布局中的细节介绍....
- Android调用web service服务
- Android学习之广播机制BroadcastReceiver
- android4.4设置默认launcher
- Android获取屏幕宽度和高度
- android 资源文件数组(string, int)
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- 【Android】在不同的线程池中执行AsyncTask
- Android Dev Tools官网地址:www.androiddevtools.cn
- 2015年Android开发新技术
- android 动画步骤
- Android---keycode值以及对应名称
- Android安全机制解析与应用实践