JSON学习详细笔记(二)- - - JSON字符串的解析

目前,调用接口返回的数据一般都是JSON字符串的形式,所以,解析JOSN字符串拿到自己想要的数据就很常用了。在解析前,首先要明确,JOSN分为两种形式:

1.对象格式:{"key":value,"key1":value1}  其中的value可以是任意值;

2.数组格式:[e1,e2]  其中的e可以是任意值。

如下,是调用高德地址编码接口返回的JSON字符串,本文以解析并拿到地址的省市区信息为例(想要快速看出JSON字符串的结构,推荐使用JSON在线解析工具:https://www.json.cn/)

{

"infocode":"10000",

"count":"1",

"geocodes":[{

"building":{"name":[],"type":[]},

"township":[],

"location":"120.249859,30.292355",

"street":"艮山东路",

"neighborhood":{"name":[],"type":[]},

"number":"150号",

"country":"中国",

"city":"杭州市",

"citycode":"0571",

"level":"门牌号",

"formatted_address":"浙江省杭州市江干区艮山东路|150号",

"province":"浙江省",

"adcode":"330104",

"district":"江干区"

}],

"status":"1",

"info":"OK"

}

1.首先,最外层是JSON对象的形式{"key":value,"key1":value1},如果我们要获得infocode的值,代码如下(其中的jsonObject为上边字符串转的JSON对象):

打印结果是1000

2.现在解析复杂一点的值geocodes内的省市区值,首先获取geocodes,此时要注意geocodes是JSON数组的形式[e1,e2],所以获取方法跟JSON对象有所不同,代码如下

JSONArray jsonArray = jsonObject.getJSONArray("geocodes");

JSONArray的值如下:

[{

"building":{"name":[],"type":[]},

"township":[],

"location":"120.249859,30.292355",

"street":"艮山东路",

"neighborhood":{"name":[],"type":[]},

"number":"150号",

"country":"中国",

"city":"杭州市",

"citycode":"0571",

"level":"门牌号",

"formatted_address":"浙江省杭州市江干区艮山东路|150号",

"province":"浙江省",

"adcode":"330104",

"district":"江干区"

}]

3.解析JSONArray。分析得知,JOSN数组中只有一个JSON对象[{}],所以得到此JOSN对象的方法如下

得到的str就又是JSON对象字符串了,转JSON对象

JSONObject fromObject = JSONObject.fromObject(str);

获得省市区字段

至此,就解析得到我们需要的省市区数据

在解析的过程中,哪怕嵌套再多层,按照以上的方法一步步的解析,就会解析得到想要的结果。

你可能感兴趣的:(技术笔记)