文章目录
1 json解析
1.1 什么是json
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
形如{key1:value1,key2:value2}的数据就是json格式数据,例如{ “firstName”:“Bill” , “lastName”:“Gates” }
JSON 是轻量级的文本数据交换格式,它 独立于语言 ,更易理解
JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台
1.2 json的两种语法
Json格式可以表示对象或者数组,语法不一样
1.2.1 对象
对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key2:value2,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组或对象
比如:
①最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":
{ “firstName”: “Brett” } 相当于==》firstName=Brett
②多个"名称 / 值对"串
{ “firstName”: “Brett”, “lastName”:“McLaughlin”, “email”: “aaaa” }
1.2.2 数组
数组在js中是中括号“[]”包裹起来的内容,数据结构为 [{key:value,key:value,…},{key:value,key:value,…}…],取值方式和所有语言中一样,使用索引获取,值的类型可以是数字、字符串、数组、对象等。
比如:
①含有1个属性的数组:
{ “people”: [
{ “firstName”: “Brett”, “lastName”:“McLaughlin”, “email”: “aaaa” },
{ “firstName”: “Jason”, “lastName”:“Hunter”, “email”: “bbbb”},
{ “firstName”: “Elliotte”, “lastName”:“Harold”, “email”: “cccc” }
]}
在这个示例中,只有一个名为 people的属性,其值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和email。
②含有多个属性的数组:
{ “programmers”: [
{ “firstName”: “Brett”, “lastName”:“McLaughlin”, “email”: “aaaa” },
{ “firstName”: “Jason”, “lastName”:“Hunter”, “email”: “bbbb” },
{ “firstName”: “Elliotte”, “lastName”:“Harold”, “email”: “cccc” }
],
“authors”: [
{ “firstName”: “Isaac”, “lastName”: “Asimov”, “genre”: “science fiction” },
{ “firstName”: “Tad”, “lastName”: “Williams”, “genre”: “fantasy” },
{ “firstName”: “Frank”, “lastName”: “Peretti”, “genre”: “christian fiction” }
]}
JSON 解析器和 JSON 库支持多种编程语言。下面介绍如何在服务器端使用java语言解析json数据
1.3 json-lib解析json
需要导入json-lib.jar,是Android内置的数据解析方式
1.3.1解析对象
解析对象是把json文本转换为一个javaBean对象
1.不带对象名:
①格式:
{
"address":"北京市","id":1001,"name":"Tom"}
②解析方法:
// 1.把json文本封装成JSONObject
JSONObject jsonObj = new JSONObject(jsonStr);
// 2.调用JSONObject的getXxx(key)获取对应的value并封装到javaBean对象上
Person p = new Person();
p.setId(jsonObj.getInt("id"));
p.setName(jsonObj .getString("name"));
p.setAddress(jsonObj.getString("address"));
2.带对象名:
①格式:
{
"person1":{
"address":"深圳市","id":1001,"name":"Tom"}}
②解析方法:
JSONObject jsonObj = new JSONObject(jsonStr).getJSONObject("person1");
Person p = new Person();
p.setId(jsonObj.getInt(