JSON简介
来源:互联网 发布:手机通话变声软件 编辑:程序博客网 时间:2024/05/18 09:16
(一)什么是JSON
JSON,Javascript Object Notation,JS对象标记,是一种取代XML的轻量级数据结构,一种具有特殊格式的字符串。
由于格式简单,因而占用流量小,常用于网络数据传输。
例如:
{ "name": "中国", "province": [{ "name": "黑龙江", "cities": { "city": ["哈尔滨", "大庆"] } }, { "name": "广东", "cities": { "city": ["广州", "深圳", "珠海"] } }, { "name": "台湾", "cities": { "city": ["台北", "高雄"] } }, { "name": "新疆", "cities": { "city": ["乌鲁木齐"] } }]}
(二)JSON的语法格式
JSON的语法格式很简单,只是用不同的分隔符将数据分割开来,且只有五个分隔符。
{} 双括号表示对象
[] 中括号表示数组
“” 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
, 逗号表示对象分隔符
根据语法解析上一部分的例子。
JSON对象有两个属性:String类型的name和数组province.
province数组中有4个成员,每个成员又有两个属性:String类型的name,cities对象。
cities对象中存在唯一一个属性city,为String数组.
(三)JSON的格式转换
我们可以通过JSONObject和JSONArray完成数据的封装。
例如,向服务器发送数据时,需要将相关数据封装成JSON格式,之后将JSON转换成String,作为HTTP/SOAP/MQTT的BODY传送出去。以第一部分的实例为例。
private String generateJSONStr(){ JSONObject china=new JSONObject(); JSONArray provinceList=new JSONArray(); JSONObject province; JSONObject cities; JSONArray city; try { province=new JSONObject(); cities=new JSONObject(); city=new JSONArray(); province.put("name","黑龙江"); city.put("哈尔滨"); city.put("大庆"); cities.put("city",city); province.put("cities",cities); provinceList.put(province); province=new JSONObject(); cities=new JSONObject(); city=new JSONArray(); province.put("name","广东"); city.put("广州"); city.put("深圳"); city.put("珠海"); cities.put("city",city); province.put("cities",cities); provinceList.put(province); province=new JSONObject(); cities=new JSONObject(); city=new JSONArray(); province.put("name","台湾"); city.put("台北"); city.put("高雄"); cities.put("city",city); province.put("cities",cities); provinceList.put(province); province=new JSONObject(); cities=new JSONObject(); city=new JSONArray(); province.put("name","新疆"); city.put("乌鲁木齐"); cities.put("city",city); province.put("cities",cities); provinceList.put(province); china.put("name","中国"); china.put("province",provinceList); return china.toString(); } catch (JSONException e) { e.printStackTrace(); return null; } }
相反,从服务器接收数据时,需要将JSON格式的String对象,转换成JSON对象。
private JSONObject initJSON(String jsonStr){ try { JSONObject country=new JSONObject(jsonStr); String countryName=country.getString("name"); Log.i(TAG, "initJSON: country name is "+ countryName); JSONArray provinceList=country.getJSONArray("province"); for (int indexProvince=0;indexProvince<provinceList.length();indexProvince++){ JSONObject province=provinceList.getJSONObject(indexProvince); Log.i(TAG, "initJSON: province name is "+ province.getString("name")); JSONObject cities=province.getJSONObject("cities"); JSONArray city=cities.getJSONArray("city"); for (int indexCity = 0; indexCity < city.length(); indexCity++) { Log.i(TAG, "initJSON: city name is "+ city.getString(indexCity)); } } return country; } catch (JSONException e) { e.printStackTrace(); return null; } }
当然,加解密,完整性校验以及数据类型转换在传输过程中,也是必不可少的。由于本文重点记录JSON,因此暂时忽略。之后有机会,再将安全的部分总结。
阅读全文
0 0
- JSON 简介
- JSON 简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSON简介
- JSon简介
- json简介
- JSON 简介
- javase总结
- java--HashSet详解
- MySQL索引数据结构及算法原理学习笔记
- MySQL5.5安装过程详解
- 【Quartz】将定时任务持久化到数据库
- JSON简介
- KMP算法
- Idea搭建整合SSH框架(Maven管理)
- SVN 安装和基本使用教程
- BZOJ 2561: 最小生成树 最小割
- 【PHP框架】之ThinkPHP
- linux的dns高速缓存
- Java 下的函数对象
- 树的基本知识点(未完)