遇到最外层带有数组的特殊json串,如何解析。

下面,是特殊的json串:

[
    {
        "img3": "http://img01.taobaocdn.com/imgextra/i1/TB1Bq9kGXXXXXaJXpXXXXXXXXXX_!!0-item_pic.jpg_230x230.jpg",
        "name": "软毛清洁牙刷12支",
        "price": 38,
        "tg_price": 9.9
    },
    {
        "img3": "http://gi3.md.alicdn.com/imgextra/i3/1014079219/T2OfbvXwtaXXXXXXXX_!!1014079219.jpg_230x230.jpg",
        "name": "泰星星球杯大粒400g",
        "price": 11.9,
        "tg_price": 9.2
    },
    {
        "img3": "http://gi3.md.alicdn.com/imgextra/i3/528707031/TB24rSvaFXXXXaZXXXXXXXXXXXX_!!528707031.jpg_230x230.jpg",
        "name": "迷你折叠吹风机",
        "price": 88,
        "tg_price": 16.9
    },
    {
        "img3": "http://gi1.md.alicdn.com/imgextra/i1/2121757313/TB2Ib.nbXXXXXahXXXXXXXXXXXX_!!2121757313.jpg_230x230.jpg",
        "name": "肉松饼250g装约10个",
        "price": 22,
        "tg_price": 11
    },
    {
        "img3": "http://l0.51fanli.net/tuan/images/2014/12/549be87577f22.jpg",
        "name": "手机通用充电宝20000毫安",
        "price": 216,
        "tg_price": 19.9
    },
    {
        "img3": "http://l3.51fanli.net/tuan/images/2014/12/549be310db4a1.jpg",
        "name": "加厚乳胶橡胶手套",
        "price": 18,
        "tg_price": 5.8
    },
    {
        "img3": "http://l0.51fanli.net/tuan/images/2014/12/549be1c63cdd0.jpg",
        "name": "苹果4/4s数据线[多规格可选]",
        "price": 9.2,
        "tg_price": 2.8
    },
    {
        "img3": "http://gd2.alicdn.com/imgextra/i2/1780008490/TB2jyTBbXXXXXcnXXXXXXXXXXXX_!!1780008490.jpg_320x320.jpg",
        "name": "完美芦荟胶40g[买2送1]",
        "price": 38,
        "tg_price": 9.9
    }
]

有三种方法,这边就讲两种:

第一种是Gson解析:

    InputStream open = getAssets().open("array.json");
            String str=StreamToString.streamToStr(open,"utf-8");
            Log.d("zzz",str);
            List<Shop>  shops=new ArrayList<>();
//            //得到要解析的 数据的集合类型 type
//            Type type=new TypeToken<List<Shop>>(){}.getType();
//
//            Gson gson=new Gson();
//            shops=gson.fromJson(str,type);
//      打印一下
//            for(Shop s:shops){
//                Log.d("zzz",s.toString());
//            }

第二种是原生解析:

 InputStream open = getAssets().open("array.json");
            String str=StreamToString.streamToStr(open,"utf-8");
            Log.d("zzz",str);
            List<Shop>  shops=new ArrayList<>();

JSONArray array = new JSONArray(str);
                for(int i=0;i<array.length();i++){
                    Shop shop=new Shop();
                    JSONObject object=array.optJSONObject(i);
                    String name=object.optString("name");
                    shop.setName(name);
                    //添加到集合中
                    shops.add(shop);
                }
            for(Shop s:shops){
                Log.d("zzz",s.getName());
            }

得到集合就可以了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值