Java对json数据的处理

json数据有两种形式,一种是[],另一种是“”,第一种是数组,第二种是对象
参考JSON中的{}与[]的区别
对数组型的json数据处理:

  //初始化省份数据 读取省份数据并显示到下拉框
        try {
            InputStream inputStream = getResources().getAssets().open("City.txt");//打开"City.txt"文件
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));//新建BufferedReader
            String lines = bufferedReader.readLine();//读取文本中的数据
            StringBuffer stringBuffer = new StringBuffer();
            // Log.v("MainActivity", lines);
            while (lines != null){
                stringBuffer.append(lines);
                lines =bufferedReader.readLine();

            }
            final JSONArray Data = new JSONArray(stringBuffer.toString());//将数据转换成JSON格式
            //循环这个文件数组、获取数组中每个省对象的名字
            for (int i = 0; i < Data.length(); i++){
                JSONObject provinceJsonObject = Data.getJSONObject(i);
                String provinceName = provinceJsonObject.getString("name");
                provinceList.add(provinceName);//将数据加入省份数组中
            }

对本地json数据的读取,解析。


第二种对对象型json数据处理,解析json数据,找到数据对应的key值

 public void QueryCityNum(String province,String City,String Area){

        String CityNum=null;
        Log.i("QueryCityNum","进入QueryCityNum函数");

        //打开CityNumber.txt
        try{
            InputStream inputStream = getResources().getAssets().open("CityNumber.txt");//打开"City.txt"文件
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));//新建BufferedReader
            String lines = bufferedReader.readLine();//读取文本中的数据
            StringBuffer stringBuffer = new StringBuffer();
            while (lines != null){
                stringBuffer.append(lines);
                lines =bufferedReader.readLine();
            }
//            while (bufferedReader.readLine() != null){
//                stringBuffer.append(lines);
                lines =bufferedReader.readLine();
//            }
            JSONObject Data = new JSONObject(stringBuffer.toString());
  //          Log.i("QueryCityNum",Data.toString());
            JSONObject provinceName= Data.getJSONObject("100000");
           // String provinceName = Data.getString("100000");//获取省份的数据表
            //搜索省份对应的key值
//            provinceName.keys();
            Iterator<String> it = provinceName.keys();
            while(it.hasNext()){
                String key = it.next();
                String value = provinceName.getString(key);
                if(value.equals(province)){
                    CityNum = key;//将找到key值赋值
                    Log.i("QueryCityNum", key);
                }
            }
            //搜索市的编码
            JSONObject CityName= Data.getJSONObject(CityNum);
            Log.i("QueryCityNum",CityName.toString());
            Iterator<String> it2 = CityName.keys();
            while(it2.hasNext()){
                String key = it2.next();
                String value = CityName.getString(key);
                if(value.equals(City)){
                    CityNum = key;//将找到key值赋值
                    Log.i("QueryCityNum", key);
                }
            }
            //搜索区/县的编码
            JSONObject AreaName= Data.getJSONObject(CityNum);
            Log.i("QueryCityNum",AreaName.toString());
            Iterator<String> it3 = AreaName.keys();
            while(it3.hasNext()){
                String key = it3.next();
                String value = AreaName.getString(key);
                if(value.equals(Area)){
                    CityNum = key;//将找到key值赋值
                    Log.i("QueryCityNum", key);
                }
            }
        }catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
处理嵌套json格式的数据。。。 public static void main(String[] args) { // 官方API http://www.json.org/java/ /* 购物车中信息 goods_cart={cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"b555bfj05d7dcg307h91323398584156",specsstr:"颜色:黑色 尺寸:L",price:4765,stock:15,count:6},cart_1325036702105:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"787a9f5he93chcifh951323398314484",specsstr:"颜色:黑色 尺寸:XL",price:4700.15,stock:12,count:1},cart_1325136643984:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100015_00399656_68.jpg",specs:"8466347bi6eia43hd6j1323398639859",specsstr:"颜色:灰色 尺寸:XL",price:4600,stock:3,count:1}}; * **/ try{ String s0 = "{cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"b555bfj05d7dcg307h91323398584156",specsstr:"颜色:黑色 尺寸:L",price:4765,stock:15,count:6},cart_1325036702105:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"787a9f5he93chcifh951323398314484",specsstr:"颜色:黑色 尺寸:XL",price:4700.15,stock:12,count:1},cart_1325136643984:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100015_00399656_68.jpg",specs:"8466347bi6eia43hd6j1323398639859",specsstr:"颜色:灰色 尺寸:XL",price:4600,stock:3,count:1}};"; String s= java.net.URLDecoder.decode(s0, "utf-8"); System.out.println(s); JSONObject o = new JSONObject(s); System.out.println(o.get("cart_1325036696007")); //根据属性,获取值 System.out.println(o.toString()); //得到字符串 System.out.println(o.names().get(2)); //获取对象中第三组属性名 System.out.println(o.names().length()); //获取对象中属性个数 //System.out.println(o.names().getJSONArray(1)); //获取对象中属性个数 //names(jsonObjectName) 私有方法 获取该对象的所有属性名,返回成JSONArray。 //JSONObject.getNames(jsonObjectName) 静态方法 获取对象的所有属性名,返回成数组。 System.out.println(JSONObject.getNames(o.getJSONObject("cart_1325036696007"))[1]); System.out.println(o.getJSONObject("cart_1325036696007").names().get(1)); System.out.println(o.length()); //共有几组对象 System.out.println(o.has("cart_1325036696007")); //有无该该值 /* 遍历json中的每一组元素*/ String name = null; JSONObject t_o = null; for(int i=0; i<o.length(); i++){ name = JSONObject.getNames(o)[i]; System.out.println("商品项ID:"+name); t_o = o.getJSONObject(name); for(int j=0; j< t_o.length(); j++){ name = JSONObject.getNames(t_o)[j]; System.out.print(name+":"+t_o.get(name)+" "); } System.out.println(); } }catch(Exception e){ e.printStackTrace(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值