首页 > 学院 > 开发设计 > 正文

JSON数据格式(一)

2019-11-09 15:21:36
字体:
来源:转载
供稿:网友

JSON数据格式(一)


JSON

javaScript 对象表示法(Javascript Object Notation)。已经成为现在互联网中数据交换格式。

Android API

Android API中有JSON解析,可以将文件、输入流中的数据转化为JSON对象,然后从对象中获取JSON保存的数据内容。 Android 中org.json包下,提供JSONObject、JSONArray、JSONStringer、JSONTokener、JSONException。

Json优势

易读易编写,也易于机器解析和生成。

两种数据结构

“名称/值”对的集合,可以被理解为对象(object),记录(Record),结构(struct),字典(Dictionary),哈希表(HashTable),有键列表(Keyed list),或者挂链数组(Assocation arra)值的有序列表(An ordered list of values)。大部分语言里理解为数组。

JSON Object

以key/value对形式{“名称”:值}存在的无序的jsonObject对象,键值对之间用“,”隔开。其中key值必须是string类型,value可以是JSONObjects、JSONArrays、Strings、Booleans、Integers、Longs、Doubles或者NULL等的任意组合。如:{“name”:”jack”}

JSON Array

有序的value的集合,数组是值(value)的有序集合,使用“[ ]”括起来,值之间用“,”逗号分隔,value可以是JSONObjects、JSONArrays、Strings、Booleans、Integers、Longs、Doubles或者NULL等的任意组合,如:{“info”:[{“name”:”jack”},{“name”:”rose”}]},{value1,value2,value3}。这些结构可以嵌套。

JSONObject与JSONArray常用的方法

JSONObject

JSONObject.put() //将值放入其中JSONObject.getXXX() //若不存在此值,则返回异常JSONObject.optXXX() //若不存在此值,则返回空字符串具体可以参照官方链接 http://www.android-doc.com/reference/org/json/JSONObject.html

JSONArray

JSONArray.put()JSONArray.getXXX()JSONArray.optXXX()

JSONObject对象的创建

//创建JSONObject PRivate String createJSONObject() { JSONObject object = new JSONObject(); try { object.put("name", "jack_obj"); object.put("age", 11); object.put("undergraduate", true); // object.put("salary", null); //这种输入null值,输出在屏幕中不显示salary这个key键。 object.put("salary", JSONObject.NULL); //这个则会显示salary这个key,还有null值 } catch (JSONException e) { e.printStackTrace(); } return object.toString(); }

JSONArray对象的创建

//创建JSONArray private String createJSONArray() { JSONArray array = new JSONArray(); array.put("jack_arr"); array.put(22); //生成JSONObject对象放入JSONArray中 JSONObject inner_obj1 = new JSONObject(); try { inner_obj1.put("name", "Alice"); inner_obj1.put("age", 34); } catch (JSONException e) { e.printStackTrace(); } JSONObject inner_obj2 = new JSONObject(); try { inner_obj2.put("name", "white"); inner_obj2.put("age", 45); } catch (JSONException e) { e.printStackTrace(); } array.put(inner_obj2); array.put(inner_obj1); return array.toString(); }

JSONObject解析

//解析JSONObject数据 private String parseJSONObject(String json) { String result = " "; try { JSONObject jsonObject = new JSONObject(json); //optString方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值, // 但是getString方法会出现空指针异常的错误。 String name = jsonObject.optString("name"); // String name = jsonObject.getString("name"); String age = jsonObject.optString("age"); if (!TextUtils.isEmpty(name)) { result += "name:" + name; } if (!TextUtils.isEmpty(age)) { result += "age:" + age; } return result; } catch (Exception e) { e.printStackTrace(); } return result; }

JSONArray解析

//parseJSONObject方法是会在接下来parseJSONArray()中调用 private String parseJSONObject(JSONObject jsonObject) { String result = " "; /** * optString方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值, * 但是getString方法会出现空指针异常的错误。 * */ String name = jsonObject.optString("name"); // String name = jsonObject.getString("name"); String age = jsonObject.optString("age"); if (!TextUtils.isEmpty(name)) { result += "name:" + name; } if (!TextUtils.isEmpty(age)) { result += "age:" + age; } return result; } //解析JSONArray数据 private String parseJSONArray(String array) { String result = " "; try { JSONArray jsonArray = new JSONArray(array); result = jsonArray.getString(0); result +=jsonArray.getString(1); result +=jsonArray.getString(2); for (int i = 2; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); result += parseJSONObject(jsonObject) + "/n/n"; // result += jsonObject.optString("jack"); } } catch (JSONException e) { e.printStackTrace(); } return result.toString(); }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表