JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
下面让我们先来看一下json:
{ "firstName": "John", "lastName": "Smith", "male": true, "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] }
JSON建构于两种结构:
- “键/值”对的集合。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
1、 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个 “:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。上边那段json数据就是一个对象,里面有包括了数组和对象;
2、数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。值(value)可以是双引号括起来的字符串(string)、数值(number)、
true
、false
、 null
、对象(object)或者数组(array)。这些结构可以嵌套。
好了,了解了json的结构后我们再来看看上面的那段json数据。首先,这段json数据是由大括号“{……}”包起来的,也就可以看做一个json对象(JSON Object),我们可以看到
好了关于json的解析就讲到这里,基本的json解析就这么简单,做多了就熟练了,俗话说熟能生巧就值这个道理
"firstName": "John",
"lastName": "Smith", "male": true, "age": 25,
String json = "";//json是上面的那段json数据;
//得到这段json数据对象
JSONObject object = new JSONObject(json);
//获取键对应的值
String firstName = object.getString("firstName");
String lastName = object.getString("Smith");
boolean male = object.getBoolean("male");
int age = object.getInt("age");
//获取address对象
JSONObject address = object.getJSONObject("address");
//获取里面的值
String streetAddress = address.getString("streetAddress");
......
//获取数组 并得到里面的值
JSONArray array = object.getJSONArray("phoneNumber");
int length = array.length();
for(int i=0;i<length;i++){
JSONObject obj = array.getJSONObject(i);
String type = obj.getString("type");
String number = obj.getString("number");
}