Android json数据解析

本文介绍了JSON数据格式的基础知识,包括JSON对象和数组的定义,并提供了解析JSON数据的实用示例,帮助开发者理解如何使用Android SDK中的类来处理JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎转载,转载请标明出处^_^

1:何谓json:

在我们实际的开发过程当中,经常会用JSON格式传递实体类或是实体类的集合,JSON数据(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,易于阅读和编写,同时也易于机器解析和生成,是理想的数据交换格式。

JSON分为两种表现方式JsonObjectJsonArray

JsonObject的数据格式为:{“名称”:“值”,“名称”:“值”,……}。通常用来表示一个实体的内容。JsonObject中可以有多个“名称”:“值”,用逗号分隔。

JsonArray的数据格式为:[{“名称”:“值”},{“名称”:“值”},{“名称”:“值”},……]。通常用来表示多个实体的内容,也就是说JsonArray是JsonObject的集合,用逗号分隔,最外层用中括号进行包裹。

例如用以上两种JSON格式表示用户的名字和密码:

JsonObject: {“user”:“admin”,“pwd”:“123”}
JsonArray : [{“user”:“admin”,“pwd”:“123”},{“user”:“csdn”,“pwd”:“234”}]

2:解析Json数据:
Android SDK中提供了JSONArrayJSONObjectJSONStringerJSONTokenerJSONException等类对JSON数据进行操作,通过这些类可以非常方便的完成JSON字符串与JSONObjectJSONArray之间的相互转换。常用方法如下:

JSONArray类
构造方法JSONArray(String json),把json格式的字符串创建成一个JSONArray对象。
length()方法,返回JSONObject的数量。
getJSONObject(int index)方法,根据下标返回JSONObject。

JSONObject类
构造方法JSONObject(String json),把json格式的字符串创建成一个JSONObject对象。
has(String name)方法,判断元素是否存在。
get(String name)方法,获取元素的值。

小实例:解析指定JSONObjectJSONArray

String jsonObject = {"name":"admin","homePage":"www.localhost.com"} ;
String jsonArray = [{"name":"admin","homePage":"www.localhost.com"},{"name":"normal_user","homePage":"www.localhost_normal.com"}] 
//解析JSONObject
    public void jsonData(String json){
        try {
            //实例json
            JSONObject jsonObject = new JSONObject(json);
            String name = "";
            String homePage = "";
            //获取json中的属性值
            if (jsonObject.has("name")){
                name = jsonObject.getString("name");
            }
            if (jsonObject.has("homePage")){
                homePage = jsonObject.getString("homePage");
            }
            Toast.makeText(this,name+"---"+homePage,Toast.LENGTH_SHORT).show();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

//解析JSONArray
    public void jsonArray(String json){
        StringBuffer stringBuffer = new StringBuffer();
        String name = "";
        String homePage = "";
        try {
            //实例json数组对象
            JSONArray jsonArray = new JSONArray(json);
            //循环获取json数组里的json对象
            for (int i = 0;i<jsonArray.length();i++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(i);
                //获取json中的属性值
                if (jsonObject.has("name")){
                    name = jsonObject.getString("name");
                    stringBuffer.append(name);
                }
                if (jsonObject.has("homePage")){
                    homePage = jsonObject.getString("homePage");
                    stringBuffer.append(homePage);
                }
            }
            Toast.makeText(this,stringBuffer.toString(),Toast.LENGTH_SHORT).show();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

以上就是最基本的解析方法。
其它解析方式会在近期本文下方更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值