Android的本地Json解析
16lz
2021-01-26
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); }
另附:
定义的实体类为:
public class ShopBean { private int seller_uid;//店铺ID private String seller_name;//店铺名称 private int stock_id;//商品ID private String goods_name;//商品名称 private int qty;//商品的星级 private boolean is_choose;//是否选中 private int price;//单价 private String goods_img;//图片链接 private String extend;//图片拓展 private int stock_num;//商品数量 private int goodsTotalPrice;//商品总价 private double rate;//商品税率 public int getSeller_uid() { return seller_uid; } public void setSeller_uid(int seller_uid) { this.seller_uid = seller_uid; } public String getSeller_name() { return seller_name; } public void setSeller_name(String seller_name) { this.seller_name = seller_name; } public int getStock_id() { return stock_id; } public void setStock_id(int stock_id) { this.stock_id = stock_id; } public String getGoods_name() { return goods_name; } public void setGoods_name(String goods_name) { this.goods_name = goods_name; } public int getQty() { return qty; } public void setQty(int qty) { this.qty = qty; } public boolean is_choose() { return is_choose; } public void setIs_choose(boolean is_choose) { this.is_choose = is_choose; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getGoods_img() { return goods_img; } public void setGoods_img(String goods_img) { this.goods_img = goods_img; } public String getExtend() { return extend; } public void setExtend(String extend) { this.extend = extend; } public int getStock_num() { return stock_num; } public void setStock_num(int stock_num) { this.stock_num = stock_num; } public int getGoodsTotalPrice() { return goodsTotalPrice; } public void setGoodsTotalPrice(int goodsTotalPrice) { this.goodsTotalPrice = goodsTotalPrice; } public double getRate() { return rate; } public void setRate(double rate) { this.rate = rate; } @Override public String toString() { return "商品ID: " + stock_id + "\n" + "商品名称: " + goods_name + "\n\n" + "商品等级: " + qty + "\n" + "是否选中: " + is_choose + "\n" + "商品单价: " + price + "\n" + "商品拓展: " + extend + "\n" + "商品数量: " + stock_num + "\n" + "商品总价: " + goodsTotalPrice + "\n" + "商品税率: " + rate + "\n" ; }}View Code
本地的Json:
{ "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.support.v4.util.Pools 源码解析
- Android(安卓)NDK开发之旅27--C++--string类的用法总结
- android跟服务器使用json传递数据
- Android(安卓)中String.xml文件中的错误
- android中BaseActivity的公共方法
- Android报错解决 UIL doesn't support scheme(protocol) by defa
- TextUtils
- Android字符串资源
- Android(安卓)实现TextView字符串关键字变色