Android中json的构建和解析

Android自带JSON解析工具,提供对JSONObject(JSON对象)和JSONArray(JSON数组)的解析处理。

1.JSONObject相关API

  • JSONObject构造函数:从指定字符串构造一个JSONObject对象。
  • getJSONObject:获取指定名称的JSONObject对象。
  • getString:获取指定名称的字符串。
  • getInt:获取指定名称的整型数。
  • getDouble:获取指定名称的双精度数。
  • getBoolean:获取指定名称的布尔数。
  • getJSONArray:获取指定名称的JSONArray数组对象。
  • put:添加一个JSONObject对象。
  • toString:把当前的JSONObject对象输出为一个JSON字符串。

2.JSONArray相关API

  • length:获取JSONArray数组的长度。
  • getJSONObject:获取JSONArray数组在指定位置的JSONObject对象。
  • put:往JSONArray数组中添加一个JSONObject对象。

3.JSON的构造和解析示例

JSON构造

    // 获取一个手动构造的json串
    private String getJsonStr() {
        String str = "";
        // 创建一个JSON对象
        JSONObject obj = new JSONObject();
        try {
            // 添加一个名叫name的字符串参数
            obj.put("name", "address");
            // 创建一个JSON数组对象
            JSONArray array = new JSONArray();
            for (int i = 0; i < 3; i++) {
                JSONObject item = new JSONObject();
                // 添加一个名叫item的字符串参数
                item.put("item", "第" + (i + 1) + "个元素");
                // 把item这个JSON对象加入到JSON数组
                array.put(item);
            }
            // 添加一个名叫list的数组参数
            obj.put("list", array);
            // 添加一个名叫count的整型参数
            obj.put("count", array.length());
            // 添加一个名叫desc的字符串参数
            obj.put("desc", "这是测试串");
            // 把JSON对象转换为json字符串
            str = obj.toString();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return str;
    }

JSON解析

    // 解析json串内部的各个参数
    private String parserJson(String jsonStr) {
        String result = "";
        try {
            // 根据json串构建一个JSON对象
            JSONObject obj = new JSONObject(jsonStr);
            // 获得名叫name的字符串参数
            String name = obj.getString("name");
            // 获得名叫desc的字符串参数
            String desc = obj.getString("desc");
            // 获得名叫count的整型参数
            int count = obj.getInt("count");
            result = String.format("%sname=%s\n", result, name);
            result = String.format("%sdesc=%s\n", result, desc);
            result = String.format("%scount=%d\n", result, count);
            // 获得名叫list的数组参数
            JSONArray listArray = obj.getJSONArray("list");
            for (int i = 0; i < listArray.length(); i++) {
                // 获得数组中指定下标的JSON对象
                JSONObject list_item = listArray.getJSONObject(i);
                // 获得名叫item的字符串参数
                String item = list_item.getString("item");
                result = String.format("%s\titem=%s\n", result, item);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return result;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值