JSON
一、简介
全称:JavaScript Ojbect Notation,JavaScript对象标记
功能:轻量级数据交换语言
语法严格
两种建立JS对象的方式
//方式一:通过function function Person(xid,xname,xsal){ this.id=xid; this.name=name; this.sal=xsal; } var p = new person(1,"张三",9500); //方式二:通过字面量,后面那一串字符串就是所谓的json var p={id:1,name:"张三",sal=9500};
二、语法
- {} 对象
- [] 数组
- , 分隔属性
- : 左边为属性名,右边为属性值
属性名可用可不用引号括起,属性值为字符串一定要用引号括起
三、结构
JSON建构于两种结构:
- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
四、使用
1. 说明
需要json-lib-2.1-jdk15.jar,但是Android SDK中内置了JSON解析器(不同于这个jar包,Android中的比较精简),所以不用导入。
2. Java项目中使用
需要导入以下jar包
//将整个对象转为json数组
JSONArry ja = JSONArray.fromObject(Object);
//只将对象中的某些属性转成JSON对象
jsonConfig.setExcludes(String[] );//不参与转成JSON文本属性
JSONObject ja = JSONObject.fromObject(Object,jsonConfig);
3. Android项目中使用
3.1 JSONObject
本质:是一个LinkedHashMap<String, Object>
构造方法
/** * 功能:构造方法,从json字符串中创建键值映射(JSON对象) * 参数json:json字符串 * 返回值:JSONObject */ public JSONObject(String json) throws JSONException { this(new JSONTokener(json)); }
获取和设置方法
//返回对应name的值,如果没有就返回null Object opt(String name) //更精准的获取方法 JSONObject optJSONObject(String name) JSONArray optJSONArray(String name) ... //返回对应name的值,如果没有就抛出异常 Object get(String name) //更精准的获取方法 getJSONObject(String name) getJSONArray(String name) ... //构建name和value的映射,如果已存在就覆盖,如果value为null就移除 JSONObject put(String name, Object value)
3.2 JSONArray
本质:是一个ArrayList<Object>
构造方法
/** * 功能:构造方法,从json字符串中创建json数组 * 参数json:json字符串 * 返回值:JSONOArray */ public JSONArray(String json) throws JSONException { this(new JSONTokener(json)); }
获取和设置方法
//返回对应index的值,如果没有就返回null Object opt(int index) //更精准的获取方法 JSONArray optJSONArray(int index) JSONObject optJSONObject(int index) ... //返回对应index的值,如果没有就抛出异常 Object get(int index) //更精准的获取方法 getJSONObject(int index) getJSONArray(int index) ... //往指定索引添加值,如果已存在就覆盖 JSONArray put(int index, Object value)
五、XML与JSON
- XML:常用于配置文件,结构清晰,易读
- JSON:常用于传输数据,传输量小