Android——解析JSON数据格式

1. 待解析JSON数据

[{"id":"5","version":"5.5","name":"Clash of Clans"},
{"id":"6","version":"3.5","name":"Boom Beach"}]

2. 使用JSONObject解析

private void parseJSONWithJSONObject(String jsonData){
        try{
            JSONArray jsonArray = new JSONArray(jsonData);
            for(int i = 0;i < jsonArray.length();i ++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String id = jsonObject.getString("id");
                String name = jsonObject.getString("name");
                String version = jsonObject.getString("version");
                Log.d("MainActivity","id is "+id);
                Log.d("MainActivity","name is "+name);
                Log.d("MainActivity","version is "+version);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

由于我们上面的数据是一个JSON数组,因此首先传到一个JSONArray对象中,然后循环遍历,从中取出的每一个元素都是一个JSONObject对象,每个JSONObject对象中又会包含id、name和version这些数据。接下来只需要调用getString() 方法将这些数据取出并打印。

3. JSON API

JSON
JSONArray A dense indexed sequence of values.
JSONObject A modifiable set of name/value mappings.
JSONStringer Implements JSONObject.toString() and JSONArray.toString().
JSONTokener Parses a JSON (RFC 4627) encoded string into the corresponding object.
Exceptions
JSONException Thrown to indicate a problem with the JSON API.

4. JSONObject解析获取不存在的key

如果解析JSONObject,获取不存在的key或者key为空,
optString() 返回null
optInt() 返回0

5. getType和optType

getType可以将要获取的键的值转换为指定的类型,如果无法转换或没有值则抛出JSONException

optType也是将要获取的键的值转换为指定的类型,无法转换或没有值时返回用户提供或这默认提供的值

6. JSONStringer

SONStringer 类用来快速方便地创建一个Json 文本,创建出来的文本完全符合Json文本的语法,没有多余的空格键,所以生成的文本可以直接被储存或者传输,每一个JSONStringer的实例都能创建一个JSON 文本。

一个JSONStringer的实例提供了一个value方法来向文本中添加键值,提供了一个key方法,key方法必须在value方法之前调用,用来向文本中添加键,有一个array 和endArray 方法用来制作和捆绑数组值,也有object方法和endObject方法用来制作和捆绑object值。每一个方法都返回一个JSONStringer 的实例,允许有串联结构。例如:

myString = new JSONStringer()
     .object()
     .key("JSON").value("Hello, World!")
     .endObject()
     .toString;

上面这个实例创建了如下的字符串: {“JSON”:”Hello, World!”}

第一个方法必须是object 或者array ,没有方法用来添加逗号和冒号,JSONStringer自动为你添加,object 或者是array最多可以嵌套20层。
有的时候,使用JSONStringer类比使用JSONObject 类更容易创建一个Json 文本

构造方法:
JSONStringer()——-构造一个新的JSONStringer 对象
方法:
array() ——开始添加一个array
endArray() ——结束一个array
object() ——开始添加一个object
endObject() ——结束一个object
key(String s)——添加一个键
value系列方法 ——添加一个值
toString() ——返回一个JSON文本的字符串

其他阅读:
Android中JSON的解析-JSONObject和JSONArray
android json解析及简单例子
JSON详解
JSON解析中获取不存在的key

猜你喜欢

转载自blog.csdn.net/qq_35008279/article/details/82014299