JSON数据格式(一)
来源:互联网 发布:李世默 知乎 编辑:程序博客网 时间:2024/06/05 04:47
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(); }
0 0
- JSON数据格式(一)
- json数据格式(转)
- JSON 数据格式(基础知识)
- Json数据格式(转载)
- IOS解析JSON数据格式错误一
- json学习(一)--将一个对象或集合转换成符合json数据格式的字符串
- JSON数据格式(附翻译)
- json数据格式
- Json数据格式
- json数据格式
- JSON数据格式
- JSON数据格式
- JSON数据格式
- JSON数据格式
- JSON数据格式
- JSON数据格式
- Json 数据格式
- JSON数据格式
- 机器学习经典算法之KNN及python实现
- leecode 解题总结:38 Count and Say
- iOS真机调试
- java--01--final
- Shader(固定管线着色器)
- JSON数据格式(一)
- webpack 入门
- C++ STL中Map的按Key排序和按Value排序
- 文章标题
- linux下使用find xargs grep查找文件及文件内容
- ajax入门之建立XHR对象 (1)
- Leetcode 321 - Create Maximum Number(贪心)
- 最大子段和
- 每天一个linux命令:more命令