简介

JsonPath是一种简单的方法来提取JSON文档的方法。它支持的编程语言有很多,如java、python、JavaScript和PHP
JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容。

maven依赖

  1. <!-- https://mvnrepository.com/artifact/com.jayway.jsonpath/json-path -->
  2. <dependency>
  3. <groupId>com.jayway.jsonpath</groupId>
  4. <artifactId>json-path</artifactId>
  5. <version>2.6.0</version>
  6. </dependency>

操作符

操作符 说明
$ 表示根元素
@ 当前元素
. or [] 子元素
n/a 父元素
* 通配符,表示所有的元素
.. 选择所有符合条件的节点
[] 迭代器标识,如数组下标
[,] 连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。
[start,step] 数组切片操作
?() 过滤表达式
() 支持表达式计算

函数

函数可以在路径的尾部调用,函数的输出是路径表达式的输出,该函数的输出是由函数本身所决定的

函数 描述 输出
min() 提供数组的最小值 Double
max() 提供数组的最大值 Double
avg() 提供数组的平均值 Double
stddev() 提供数组的标准偏差值 Double
length() 提供数组的长度 Integer
sum() 提供数组的总和 Double
keys() 提供属性键(终端波浪号的替代方案 ~) Set
concat(X) 提供带有新项目的路径输出的串联版本 like input
append(X) 向 json 路径输出数组添加一个项目 like input

过滤操作符

过滤器是用于过滤数组的逻辑表达式。 典型的过滤器是 [?(@.age > 18)] 表示当前节点属性 age 大于 18,其中 @ 代表正在处理的当前项目。 可以使用逻辑运算符 && 和 || 来创建更复杂的过滤器。 字符串文字必须用单引号或双引号括起来([?(@.color == ‘blue’)] 或 [?(@.color == “blue”)])。

操作符 说明
== left等于right(注意1不等于’1’)
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
=~ 匹配正则表达式[?(@.name =~ /foo.*?/i)]
in 左边存在于右边 [?(@.size in [‘S’, ‘M’])]
nin 左边不存在于右边
subsetof 左边是 右边 [?(@.sizes subnetof [‘S’, ‘M’, ‘L’])] 的子集
anyof 左边与右边有交集 [?(@.sizes anyof [‘M’, ‘L’])]
noneof 左边与右边没有交集 [?(@.sizes noneof [‘M’, ‘L’])]
size (数组或字符串)长度
empty (数组或字符串)为空

Java版测试

测试的json数据

  1. {
  2. "text" : "张三",
  3. "expensive" : 6,
  4. "body" : {
  5. "rvNoNum" : 23,
  6. "rvNoRecords" : [
  7. {
  8. "score" : 4,
  9. "rvAddress" : "2",
  10. "consignments" : null
  11. },
  12. {
  13. "score" : 8,
  14. "rvAddress" : "3",
  15. "consignments" : null
  16. }
  17. ]
  18. }
  19. }

测试代码

  1. package jsonpathdemo;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import com.jayway.jsonpath.JsonPath;
  4. import java.io.IOException;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. public class jsonpathTest {
  8. public static void main(String[] args) throws IOException {
  9. // 定义需要测试的json字符串
  10. String testJson = "{
  11. " +
  12. " "text": "张三",
  13. " +
  14. " "expensive": 6,
  15. " +
  16. " "body": {
  17. " +
  18. " "rvNoNum": 23,
  19. " +
  20. " "rvNoRecords": [{
  21. " +
  22. " "score": 4,
  23. " +
  24. " "rvAddress": "2",
  25. " +
  26. " "consignments": null
  27. " +
  28. " }, {
  29. " +
  30. " "score": 8,
  31. " +
  32. " "rvAddress": "3",
  33. " +
  34. " "consignments": null
  35. " +
  36. " }]
  37. " +
  38. " }
  39. " +
  40. "}";
  41. //使用jackson对字符串反序列化为json对象
  42. ObjectMapper mapper = new ObjectMapper ( );
  43. HashMap responseJson = mapper.readValue ( testJson, HashMap.class );
  44. // 输出text的值
  45. String text = JsonPath.read(responseJson,"$.text");
  46. System.out.println (text );
  47. // 输出rvNoNum的值
  48. int rvNoNum = JsonPath.read(responseJson,"$.body.rvNoNum");
  49. System.out.println ( rvNoNum);
  50. //输出rvNoRecords数组的第2个值
  51. List<Object> rvNoRecords = JsonPath.read(responseJson,"$..rvNoRecords[1]");
  52. System.out.println ( rvNoRecords);
  53. //输出rvNoRecords数组的第1和第2个值
  54. List<Object> rvNoRecords1 = JsonPath.read(responseJson,"$..rvNoRecords[0,1]");
  55. System.out.println (rvNoRecords1 );
  56. //输出rvNoRecords数组中score<=expensive的所有值
  57. List<Object> rvNoRecords2 = JsonPath.read(responseJson,"$..rvNoRecords[?(@.score < $['expensive'])]");
  58. System.out.println ( rvNoRecords2);
  59. //输出rvNoRecords[0]的rvAddress值
  60. String rvAddress1 = JsonPath.read(responseJson, "$.body.rvNoRecords[0].rvAddress");
  61. System.out.println ( rvAddress1);
  62. //输出全部rvAddress的值,使用Iterator迭代
  63. List<String> rvAddress = JsonPath.read(responseJson,"$.body.rvNoRecords[*].rvAddress");
  64. System.out.println ( rvAddress);
  65. //输出rvNoRecords[*]中rvAddress== '2'的rvNoRecords
  66. List<Object> rvAddress2 = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.rvAddress == 2)]");
  67. System.out.println (rvAddress2 );
  68. //输出rvNoRecords[*]中score>5 的rvNoRecords
  69. List<Object> score = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.score>5)]");
  70. System.out.println ( score);
  71. //输出rvNoRecords[*]中含有consignments元素的rvNoRecords
  72. List<Double> consignments = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.consignments)]");
  73. System.out.println ( consignments);
  74. //输出该json中所有rvAddress的值
  75. List<Object> rvNoNum2 = JsonPath.read(responseJson,"$..rvAddress");
  76. System.out.println (rvNoNum2 );
  77. //输出rvNoRecords数组的长度
  78. Integer length = JsonPath.read(responseJson,"$..rvNoRecords.length()");
  79. System.out.println (length );
  80. //可以提前编辑一个路径,并多次使用它
  81. JsonPath path = JsonPath.compile("$.body.rvNoRecords[*]");
  82. List<Object> rvNoRecords3 = path.read(responseJson);
  83. System.out.println (rvNoRecords3 );
  84. }
  85. }

测试结果

  1. 张三
  2. 23
  3. [{"score":8,"rvAddress":"3","consignments":null}]
  4. [{"score":4,"rvAddress":"2","consignments":null},{"score":8,"rvAddress":"3","consignments":null}]
  5. [{"score":4,"rvAddress":"2","consignments":null}]
  6. 2
  7. ["2","3"]
  8. [{"score":4,"rvAddress":"2","consignments":null}]
  9. [{"score":8,"rvAddress":"3","consignments":null}]
  10. [{"score":4,"rvAddress":"2","consignments":null},{"score":8,"rvAddress":"3","consignments":null}]
  11. ["2","3"]
  12. 2
  13. [{"score":4,"rvAddress":"2","consignments":null},{"score":8,"rvAddress":"3","consignments":null}]

JS版测试

简单测试

  1. var jp = require('jsonpath');
  2. var cities = [
  3. { name: 'London', population: 8615246 },
  4. { name: 'Berlin', population: 3517424 },
  5. { name: 'Madrid', population: 3165235 },
  6. { name: 'Rome', population: 2870528 },
  7. ];
  8. var names = jp.query(cities, '$..name');
  9. // [ "London", "Berlin", "Madrid", "Rome" ]

如果使用 js 来遍历的话,也简单

  1. let names = cities.map((c) => c.name);

复杂数据例子

  1. {
  2. "store": {
  3. "book": [
  4. {
  5. "category": "reference",
  6. "author": "Nigel Rees",
  7. "title": "Sayings of the Century",
  8. "price": 8.95
  9. },
  10. {
  11. "category": "fiction",
  12. "author": "Evelyn Waugh",
  13. "title": "Sword of Honour",
  14. "price": 12.99
  15. },
  16. {
  17. "category": "fiction",
  18. "author": "Herman Melville",
  19. "title": "Moby Dick",
  20. "isbn": "0-553-21311-3",
  21. "price": 8.99
  22. },
  23. {
  24. "category": "fiction",
  25. "author": "J. R. R. Tolkien",
  26. "title": "The Lord of the Rings",
  27. "isbn": "0-395-19395-8",
  28. "price": 22.99
  29. }
  30. ],
  31. "bicycle": {
  32. "color": "red",
  33. "price": 19.95
  34. }
  35. }
  36. }
JsonPath Result
$.store.book[*].author 所有 book 的 author 节点
$..author 所有 author 节点
$.store.* store 下的所有节点,book 数组和 bicycle 节点
$.store..price store 下的所有 price 节点
$..book[2] 匹配第 3 个 book 节点
$..book[(@.length-1)],或 $..book[-1:] 匹配倒数第 1 个 book 节点
$..book[0,1],或 $..book[:2] 匹配前两个 book 节点
$..book[?(@.isbn)] 过滤含 isbn 字段的节点
$..book[?(@.price<10)] 过滤price<10的节点
$..* 递归匹配所有子节点

对应的语法可直接到在 JSONPath 在线验证网站上进行测试。要提一点的是,jsonpath 是支持使用 || 与 && 进行过滤的,比如上面要获取 category 为 fiction,price 大于 10 的语法为$..book[?(@.price>10 && @.category==”fiction”)] 结果如下

  1. [
  2. {
  3. "category": "fiction",
  4. "author": "Evelyn Waugh",
  5. "title": "Sword of Honour",
  6. "price": 12.99
  7. },
  8. {
  9. "category": "fiction",
  10. "author": "J. R. R. Tolkien",
  11. "title": "The Lord of the Rings",
  12. "isbn": "0-395-19395-8",
  13. "price": 22.99
  14. }
  15. ]

测试数据结构

1ac6b210780ba8a34baba9669d69197e_format,png.png

测试数据

  1. {
  2. "role": "unit",
  3. "children": [
  4. {
  5. "role": "section",
  6. "children": [
  7. {
  8. "role": "node",
  9. "children": [
  10. {
  11. "summary": "{\"indexMap\": {}, \"questionsList\": []}",
  12. "role": "group",
  13. "tab_type": "text",
  14. "name": "Learning objectives",
  15. "scoreDetail": [],
  16. "id": "u1g2",
  17. "url": "u1g2",
  18. "tags": []
  19. }
  20. ],
  21. "suggestedDuration": "0",
  22. "name": "1-1 Learning objectives",
  23. "block_id": "90ed499f91084e2aa1b7032d2e4ecd76",
  24. "url": "u1g1",
  25. "tags": []
  26. }
  27. ],
  28. "name": "Learning objectives",
  29. "tags": []
  30. },
  31. {
  32. "role": "section",
  33. "children": [
  34. {
  35. "role": "node",
  36. "children": [
  37. {
  38. "role": "node",
  39. "children": [
  40. {
  41. "role": "group",
  42. "tab_type": "task",
  43. "name": "Practice-1",
  44. "scoreDetail": [0],
  45. "id": "u1g6",
  46. "url": "u1g6",
  47. "tags": []
  48. },
  49. {
  50. "role": "group",
  51. "tab_type": "task",
  52. "name": "Practice-2",
  53. "scoreDetail": [1, 1, 1, 1],
  54. "id": "u1g7",
  55. "url": "u1g7",
  56. "tags": []
  57. },
  58. {
  59. "role": "group",
  60. "tab_type": "task",
  61. "name": "Practice-3",
  62. "scoreDetail": [1, 1, 1, 1, 1],
  63. "id": "u1g544",
  64. "url": "u1g544",
  65. "tags": []
  66. },
  67. {
  68. "role": "group",
  69. "tab_type": "task",
  70. "name": "Practice-4",
  71. "scoreDetail": [1, 1, 1, 1, 1],
  72. "id": "u1g9",
  73. "url": "u1g9",
  74. "tags": []
  75. }
  76. ],
  77. "name": "Practice",
  78. "block_id": "f6768dc9474746b9ba071e7f211534d9",
  79. "url": "u1g5",
  80. "tags": []
  81. }
  82. ],
  83. "suggestedDuration": "0",
  84. "name": "1-2 Sharing",
  85. "block_id": "1c97a87a9feb4a8aa7d6ed39482d866d",
  86. "url": "u1g3",
  87. "tags": []
  88. },
  89. {
  90. "role": "node",
  91. "children": [
  92. {
  93. "role": "group",
  94. "tab_type": "video",
  95. "name": "Get the skills",
  96. "scoreDetail": [],
  97. "id": "u1g16",
  98. "url": "u1g16",
  99. "tags": []
  100. },
  101. {
  102. "role": "node",
  103. "children": [
  104. {
  105. "role": "group",
  106. "tab_type": "task",
  107. "name": "Use the skills-1",
  108. "scoreDetail": [0, 0],
  109. "id": "u1g615",
  110. "url": "u1g615",
  111. "tags": []
  112. },
  113. {
  114. "role": "group",
  115. "tab_type": "task",
  116. "name": "Use the skills-2",
  117. "scoreDetail": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  118. "id": "u1g18",
  119. "url": "u1g18",
  120. "tags": []
  121. },
  122. {
  123. "role": "group",
  124. "tab_type": "task",
  125. "name": "Use the skills-3",
  126. "scoreDetail": [0, 0, 0, 0, 0, 0, 0],
  127. "id": "u1g19",
  128. "url": "u1g19",
  129. "tags": []
  130. }
  131. ],
  132. "name": "Use the skills",
  133. "block_id": "2d8a81799bcc44ccab2646b613557b2b",
  134. "url": "u1g17",
  135. "tags": []
  136. },
  137. {
  138. "role": "node",
  139. "children": [
  140. {
  141. "role": "group",
  142. "tab_type": "task",
  143. "name": "Think and speak",
  144. "scoreDetail": [0],
  145. "id": "u1g21",
  146. "url": "u1g21",
  147. "tags": []
  148. }
  149. ],
  150. "name": "Think and speak",
  151. "block_id": "5833925c8c5e4ddab7a114b15d610983",
  152. "url": "u1g20",
  153. "tags": []
  154. }
  155. ],
  156. "suggestedDuration": "0",
  157. "name": "1-3 Listening",
  158. "block_id": "681817aaf75845468e464e1a8d82f2c8",
  159. "url": "u1g14",
  160. "tags": []
  161. },
  162. {
  163. "role": "node",
  164. "children": [
  165. {
  166. "role": "node",
  167. "children": [
  168. {
  169. "role": "group",
  170. "tab_type": "task",
  171. "name": "Get a clue",
  172. "scoreDetail": [0, 0, 0],
  173. "id": "u1g25",
  174. "url": "u1g25",
  175. "tags": []
  176. }
  177. ],
  178. "name": "Get a clue",
  179. "block_id": "b332335ab3554dffb92afcae5f815b5a",
  180. "url": "u1g24",
  181. "tags": []
  182. },
  183. {
  184. "role": "node",
  185. "children": [
  186. {
  187. "role": "group",
  188. "tab_type": "task",
  189. "name": "View it-1",
  190. "scoreDetail": [1, 1, 1, 1],
  191. "id": "u1g27",
  192. "url": "u1g27",
  193. "tags": []
  194. },
  195. {
  196. "role": "group",
  197. "tab_type": "task",
  198. "name": "View it-2",
  199. "scoreDetail": [1, 1, 1, 1, 1, 1, 1],
  200. "id": "u1g545",
  201. "url": "u1g545",
  202. "tags": []
  203. },
  204. {
  205. "role": "group",
  206. "tab_type": "task",
  207. "name": "View it-3",
  208. "scoreDetail": [1, 1, 1, 1, 1, 1, 1, 1],
  209. "id": "u1g29",
  210. "url": "u1g29",
  211. "tags": []
  212. }
  213. ],
  214. "name": "View it",
  215. "block_id": "a2ecf6464d5f480e98242ebe4431a73b",
  216. "url": "u1g26",
  217. "tags": []
  218. },
  219. {
  220. "role": "node",
  221. "children": [
  222. {
  223. "role": "group",
  224. "tab_type": "task",
  225. "name": "Think and speak",
  226. "scoreDetail": [0, 0],
  227. "id": "u1g31",
  228. "url": "u1g31",
  229. "tags": []
  230. }
  231. ],
  232. "name": "Think and speak",
  233. "block_id": "120d0784e63c414793f5e648c416144b",
  234. "url": "u1g30",
  235. "tags": []
  236. }
  237. ],
  238. "suggestedDuration": "0",
  239. "name": "1-4 Viewing",
  240. "block_id": "765a1be83ac5437aaca8fa150ad5af2e",
  241. "url": "u1g22",
  242. "tags": []
  243. }
  244. ],
  245. "name": "Listening to the world",
  246. "tags": []
  247. }
  248. ]
  249. }

js 实现遍历

获取role为group的children节点数据

  1. let groupList = [];
  2. for (const node of json.children ?? []) {
  3. if (node.role == 'group') groupList.push({ ...node });
  4. for (const group of node.children ?? []) {
  5. if (group.role == 'group') groupList.push({ ...group });
  6. for (const child of group.children ?? []) {
  7. if (child.role == 'group') groupList.push({ ...child });
  8. let children4 = child.children ?? [];
  9. for (const child of children4) {
  10. if (child.role == 'group') groupList.push({ ...child });
  11. }
  12. }
  13. }
  14. }
  15. console.log(groupList);

因为这些数据中,是存在不确定性的,也就是在当前节点下,二级节点可能有children,而其他节点下的二级很可能没有 children,所以我在这边就加上 ?? [] (Typescript 中的??语法,你可以把 ?? 当做 || )来判断是否有children节点,有些读者可能会思考,为啥不用递归呢。说的是挺轻松的,但是递归是很容易出问题的,万一爬取到后台数据进行了一些修改,很有可能对于的递归算法将失效,甚至导致堆栈溢出,所以我这边值循环 4 级chilren节点(实际遇到的貌似也只有 4 级,谁又能保证爬取到数据就一定只有 4 级呢)。

jsonpath 获取

于是了解到 jsonpath后,我第一个时间就开始分析这样的数据,果不其然,得到了我想要的结果⬇️
8cc57e807b2907c9f735343e63f72f13_format,png.png
语法:$..children[?(@.role==”group”)]
语法意思很明确,根节点下遍历所有children节点,同时role等于group,呈现的效果如上图。
而回到需求,就是获取role为group的children节点数据,而 jsonpath 就帮我轻松实现我想要的效果。

Python版测试

Python 2.7中自带了JSON模块,直接import json就可以使用了。
官方文档:json — JSON encoder and decoder — Python 3.11.0 documentation
Json在线解析网站:http://www.json.cn/

JSON

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

  1. 对象:对象在js中表示为{ }括起来的内容,数据结构为 { key:value, key:value, … }的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象这几种。

  2. 数组:数组在js中是中括号[ ]括起来的内容,数据结构为 [“Python”, “javascript”, “C++”, …],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

import json

json模块提供了四个功能:dumps、dump、loads、load,用于字符串 和 python数据类型间进行转换。

1. json.loads()

把Json格式字符串解码转换成Python对象 从json到python的类型转化对照如下:
91417fec625b18b2ba859e8451e871fe_d3a6571547e24e6ab63a70bdaec331bf.png

  1. # json_loads.py
  2. import json
  3. strList = '[1, 2, 3, 4]'
  4. strDict = '{"city": "北京", "name": "大猫"}'
  5. json.loads(strList)
  6. # [1, 2, 3, 4]
  7. json.loads(strDict) # json数据自动按Unicode存储
  8. # {u'city': u'\u5317\u4eac', u'name': u'\u5927\u732b'}

2. json.dumps()

实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成Json字符串
从python原始类型向json类型的转化对照如下:
01a2930cddd685a02914a0c479c0c2e9_bff7254098b245adaf74413d99dbb73c.png

  1. # json_dumps.py
  2. import json
  3. import chardet
  4. listStr = [1, 2, 3, 4]
  5. tupleStr = (1, 2, 3, 4)
  6. dictStr = {"city": "北京", "name": "大猫"}
  7. json.dumps(listStr)
  8. # '[1, 2, 3, 4]'
  9. json.dumps(tupleStr)
  10. # '[1, 2, 3, 4]'
  11. # 注意:json.dumps() 处理中文时默认使用的ascii编码,会导致中文无法正常显示
  12. print json.dumps(dictStr)
  13. # {"city": "\u5317\u4eac", "name": "\u5927\u732b"}
  14. # 记住:处理中文时,添加参数 ensure_ascii=False 来禁用ascii编码
  15. print json.dumps(dictStr, ensure_ascii=False)
  16. # {"city": "北京", "name": "大刘"}

3. json.dump()

将Python内置类型序列化为json对象后写入文件

# json_dump.py
import json

listStr = [{"city": "北京"}, {"name": "大刘"}]
json.dump(listStr, open("listStr.json","w"), ensure_ascii=False)

dictStr = {"city": "北京", "name": "大刘"}
json.dump(dictStr, open("dictStr.json","w"), ensure_ascii=False)

4. json.load()

读取文件中json形式的字符串元素 转化成python类型

# json_load.py

import json

strList = json.load(open("listStr.json"))
print strList

# [{u'city': u'\u5317\u4eac'}, {u'name': u'\u5927\u5218'}]

strDict = json.load(open("dictStr.json"))
print strDict
# {u'city': u'\u5317\u4eac', u'name': u'\u5927\u5218'}

JsonPath测试

测试数据

以拉勾网城市JSON文件 http://www.lagou.com/lbs/getAllCitySearchLabels.json 为例,获取所有城市。

{
  "state": 1,
  "message": "success",
  "content": {
    "data": {
      "allCitySearchLabels": {
        "A": [
          {
            "id": 671,
            "name": "安庆",
            "parentId": 541,
            "code": "131800000",
            "isSelected": false
          },
          {
            "id": 723,
            "name": "安阳",
            "parentId": 545,
            "code": "171500000",
            "isSelected": false
          },
          {
            "id": 601,
            "name": "鞍山",
            "parentId": 535,
            "code": "081600000",
            "isSelected": false
          },
          {
            "id": 825,
            "name": "安顺",
            "parentId": 553,
            "code": "240400000",
            "isSelected": false
          },
          {
            "id": 598,
            "name": "阿拉善盟",
            "parentId": 534,
            "code": "070300000",
            "isSelected": false
          },
          {
            "id": 862,
            "name": "安康",
            "parentId": 556,
            "code": "270400000",
            "isSelected": false
          },
          {
            "id": 105795,
            "name": "澳门",
            "parentId": 562,
            "code": "330100000",
            "isSelected": false
          },
          {
            "id": 897,
            "name": "阿克苏",
            "parentId": 560,
            "code": "311800000",
            "isSelected": false
          },
          {
            "id": 108412,
            "name": "阿拉尔",
            "parentId": 560,
            "code": "312600000",
            "isSelected": false
          },
          {
            "id": 108343,
            "name": "阿里地区",
            "parentId": 555,
            "code": "260800000",
            "isSelected": false
          }
        ],
        "B": [
          {
            "id": 5,
            "name": "北京",
            "parentId": 1,
            "code": "010100000",
            "isSelected": false
          },
          {
            "id": 570,
            "name": "保定",
            "parentId": 532,
            "code": "051100000",
            "isSelected": false
          },
          {
            "id": 588,
            "name": "包头",
            "parentId": 534,
            "code": "071300000",
            "isSelected": false
          },
          {
            "id": 789,
            "name": "北海",
            "parentId": 549,
            "code": "211000000",
            "isSelected": false
          },
          {
            "id": 666,
            "name": "蚌埠",
            "parentId": 541,
            "code": "131300000",
            "isSelected": false
          },
          {
            "id": 717,
            "name": "滨州",
            "parentId": 544,
            "code": "161400000",
            "isSelected": false
          },
          {
            "id": 794,
            "name": "百色",
            "parentId": 549,
            "code": "210500000",
            "isSelected": false
          },
          {
            "id": 678,
            "name": "亳州",
            "parentId": 541,
            "code": "130500000",
            "isSelected": false
          },
          {
            "id": 856,
            "name": "宝鸡",
            "parentId": 556,
            "code": "271000000",
            "isSelected": false
          },
          {
            "id": 828,
            "name": "毕节",
            "parentId": 553,
            "code": "240700000",
            "isSelected": false
          },
          {
            "id": 867,
            "name": "白银",
            "parentId": 557,
            "code": "281100000",
            "isSelected": false
          },
          {
            "id": 834,
            "name": "保山",
            "parentId": 554,
            "code": "251400000",
            "isSelected": false
          },
          {
            "id": 896,
            "name": "巴音郭楞",
            "parentId": 560,
            "code": "311700000",
            "isSelected": false
          },
          {
            "id": 817,
            "name": "巴中",
            "parentId": 552,
            "code": "230500000",
            "isSelected": false
          },
          {
            "id": 597,
            "name": "巴彦淖尔",
            "parentId": 534,
            "code": "070400000",
            "isSelected": false
          },
          {
            "id": 603,
            "name": "本溪",
            "parentId": 535,
            "code": "081400000",
            "isSelected": false
          }
        ],
        "C": [
          {
            "id": 801,
            "name": "成都",
            "parentId": 552,
            "code": "230100000",
            "isSelected": false
          },
          {
            "id": 8,
            "name": "重庆",
            "parentId": 4,
            "code": "040100000",
            "isSelected": false
          },
          {
            "id": 749,
            "name": "长沙",
            "parentId": 547,
            "code": "190100000",
            "isSelected": false
          },
          {
            "id": 613,
            "name": "长春",
            "parentId": 536,
            "code": "090100000",
            "isSelected": false
          },
          {
            "id": 638,
            "name": "常州",
            "parentId": 539,
            "code": "112000000",
            "isSelected": false
          },
          {
            "id": 573,
            "name": "沧州",
            "parentId": 532,
            "code": "050800000",
            "isSelected": false
          },
          {
            "id": 673,
            "name": "滁州",
            "parentId": 541,
            "code": "131100000",
            "isSelected": false
          },
          {
            "id": 758,
            "name": "郴州",
            "parentId": 547,
            "code": "190500000",
            "isSelected": false
          },
          {
            "id": 108405,
            "name": "澄迈",
            "parentId": 550,
            "code": "223400000",
            "isSelected": false
          },
          {
            "id": 755,
            "name": "常德",
            "parentId": 547,
            "code": "190800000",
            "isSelected": false
          },
          {
            "id": 781,
            "name": "潮州",
            "parentId": 548,
            "code": "200500000",
            "isSelected": false
          },
          {
            "id": 572,
            "name": "承德",
            "parentId": 532,
            "code": "050900000",
            "isSelected": false
          },
          {
            "id": 590,
            "name": "赤峰",
            "parentId": 534,
            "code": "071100000",
            "isSelected": false
          },
          {
            "id": 679,
            "name": "池州",
            "parentId": 541,
            "code": "130600000",
            "isSelected": false
          },
          {
            "id": 836,
            "name": "楚雄",
            "parentId": 554,
            "code": "251200000",
            "isSelected": false
          },
          {
            "id": 894,
            "name": "昌吉",
            "parentId": 560,
            "code": "311500000",
            "isSelected": false
          },
          {
            "id": 611,
            "name": "朝阳",
            "parentId": 535,
            "code": "080600000",
            "isSelected": false
          }
        ],
        "D": [
          {
            "id": 779,
            "name": "东莞",
            "parentId": 548,
            "code": "200300000",
            "isSelected": false
          },
          {
            "id": 600,
            "name": "大连",
            "parentId": 535,
            "code": "081700000",
            "isSelected": false
          },
          {
            "id": 715,
            "name": "德州",
            "parentId": 544,
            "code": "161600000",
            "isSelected": false
          },
          {
            "id": 805,
            "name": "德阳",
            "parentId": 552,
            "code": "231700000",
            "isSelected": false
          },
          {
            "id": 815,
            "name": "达州",
            "parentId": 552,
            "code": "230300000",
            "isSelected": false
          },
          {
            "id": 841,
            "name": "大理",
            "parentId": 554,
            "code": "250700000",
            "isSelected": false
          },
          {
            "id": 577,
            "name": "大同",
            "parentId": 533,
            "code": "061200000",
            "isSelected": false
          },
          {
            "id": 706,
            "name": "东营",
            "parentId": 544,
            "code": "162000000",
            "isSelected": false
          },
          {
            "id": 627,
            "name": "大庆",
            "parentId": 537,
            "code": "101300000",
            "isSelected": false
          },
          {
            "id": 604,
            "name": "丹东",
            "parentId": 535,
            "code": "081300000",
            "isSelected": false
          },
          {
            "id": 842,
            "name": "德宏",
            "parentId": 554,
            "code": "250600000",
            "isSelected": false
          },
          {
            "id": 107620,
            "name": "儋州",
            "parentId": 550,
            "code": "223300000",
            "isSelected": false
          },
          {
            "id": 634,
            "name": "大兴安岭",
            "parentId": 537,
            "code": "100600000",
            "isSelected": false
          }
        ],
        "E": [
          {
            "id": 592,
            "name": "鄂尔多斯",
            "parentId": 534,
            "code": "070900000",
            "isSelected": false
          },
          {
            "id": 741,
            "name": "鄂州",
            "parentId": 546,
            "code": "181600000",
            "isSelected": false
          },
          {
            "id": 748,
            "name": "恩施",
            "parentId": 546,
            "code": "180300000",
            "isSelected": false
          }
        ],
        "F": [
          {
            "id": 768,
            "name": "佛山",
            "parentId": 548,
            "code": "202000000",
            "isSelected": false
          },
          {
            "id": 681,
            "name": "福州",
            "parentId": 542,
            "code": "140100000",
            "isSelected": false
          },
          {
            "id": 674,
            "name": "阜阳",
            "parentId": 541,
            "code": "131000000",
            "isSelected": false
          },
          {
            "id": 602,
            "name": "抚顺",
            "parentId": 535,
            "code": "081500000",
            "isSelected": false
          },
          {
            "id": 607,
            "name": "阜新",
            "parentId": 535,
            "code": "081000000",
            "isSelected": false
          },
          {
            "id": 700,
            "name": "抚州",
            "parentId": 543,
            "code": "150200000",
            "isSelected": false
          }
        ],
        "G": [
          {
            "id": 763,
            "name": "广州",
            "parentId": 548,
            "code": "200100000",
            "isSelected": false
          },
          {
            "id": 822,
            "name": "贵阳",
            "parentId": 553,
            "code": "240100000",
            "isSelected": false
          },
          {
            "id": 697,
            "name": "赣州",
            "parentId": 543,
            "code": "150500000",
            "isSelected": false
          },
          {
            "id": 787,
            "name": "桂林",
            "parentId": 549,
            "code": "211200000",
            "isSelected": false
          },
          {
            "id": 792,
            "name": "贵港",
            "parentId": 549,
            "code": "210700000",
            "isSelected": false
          },
          {
            "id": 814,
            "name": "广安",
            "parentId": 552,
            "code": "230200000",
            "isSelected": false
          },
          {
            "id": 877,
            "name": "甘南",
            "parentId": 557,
            "code": "281400000",
            "isSelected": false
          },
          {
            "id": 807,
            "name": "广元",
            "parentId": 552,
            "code": "231900000",
            "isSelected": false
          },
          {
            "id": 820,
            "name": "甘孜藏族自治州",
            "parentId": 552,
            "code": "230800000",
            "isSelected": false
          }
        ],
        "H": [
          {
            "id": 653,
            "name": "杭州",
            "parentId": 540,
            "code": "120100000",
            "isSelected": false
          },
          {
            "id": 664,
            "name": "合肥",
            "parentId": 541,
            "code": "130100000",
            "isSelected": false
          },
          {
            "id": 773,
            "name": "惠州",
            "parentId": 548,
            "code": "202500000",
            "isSelected": false
          },
          {
            "id": 622,
            "name": "哈尔滨",
            "parentId": 537,
            "code": "100100000",
            "isSelected": false
          },
          {
            "id": 657,
            "name": "湖州",
            "parentId": 540,
            "code": "122200000",
            "isSelected": false
          },
          {
            "id": 799,
            "name": "海口",
            "parentId": 550,
            "code": "220100000",
            "isSelected": false
          },
          {
            "id": 587,
            "name": "呼和浩特",
            "parentId": 534,
            "code": "070100000",
            "isSelected": false
          },
          {
            "id": 568,
            "name": "邯郸",
            "parentId": 532,
            "code": "051300000",
            "isSelected": false
          },
          {
            "id": 643,
            "name": "淮安",
            "parentId": 539,
            "code": "112500000",
            "isSelected": false
          },
          {
            "id": 108353,
            "name": "海外",
            "parentId": 108352,
            "code": "350100000",
            "isSelected": false
          },
          {
            "id": 575,
            "name": "衡水",
            "parentId": 532,
            "code": "050600000",
            "isSelected": false
          },
          {
            "id": 718,
            "name": "菏泽",
            "parentId": 544,
            "code": "160200000",
            "isSelected": false
          },
          {
            "id": 752,
            "name": "衡阳",
            "parentId": 547,
            "code": "191100000",
            "isSelected": false
          },
          {
            "id": 737,
            "name": "黄石",
            "parentId": 546,
            "code": "181200000",
            "isSelected": false
          },
          {
            "id": 776,
            "name": "河源",
            "parentId": 548,
            "code": "201400000",
            "isSelected": false
          },
          {
            "id": 667,
            "name": "淮南",
            "parentId": 541,
            "code": "131400000",
            "isSelected": false
          },
          {
            "id": 724,
            "name": "鹤壁",
            "parentId": 545,
            "code": "171600000",
            "isSelected": false
          },
          {
            "id": 612,
            "name": "葫芦岛",
            "parentId": 535,
            "code": "080500000",
            "isSelected": false
          },
          {
            "id": 860,
            "name": "汉中",
            "parentId": 556,
            "code": "270600000",
            "isSelected": false
          },
          {
            "id": 745,
            "name": "黄冈",
            "parentId": 546,
            "code": "181100000",
            "isSelected": false
          },
          {
            "id": 669,
            "name": "淮北",
            "parentId": 541,
            "code": "131600000",
            "isSelected": false
          },
          {
            "id": 760,
            "name": "怀化",
            "parentId": 547,
            "code": "190300000",
            "isSelected": false
          },
          {
            "id": 672,
            "name": "黄山",
            "parentId": 541,
            "code": "131900000",
            "isSelected": false
          },
          {
            "id": 837,
            "name": "红河",
            "parentId": 554,
            "code": "251100000",
            "isSelected": false
          },
          {
            "id": 593,
            "name": "呼伦贝尔",
            "parentId": 534,
            "code": "070800000",
            "isSelected": false
          },
          {
            "id": 893,
            "name": "哈密",
            "parentId": 560,
            "code": "311400000",
            "isSelected": false
          },
          {
            "id": 795,
            "name": "贺州",
            "parentId": 549,
            "code": "210400000",
            "isSelected": false
          },
          {
            "id": 796,
            "name": "河池",
            "parentId": 549,
            "code": "210300000",
            "isSelected": false
          },
          {
            "id": 632,
            "name": "黑河",
            "parentId": 537,
            "code": "100800000",
            "isSelected": false
          }
        ],
        "J": [
          {
            "id": 702,
            "name": "济南",
            "parentId": 544,
            "code": "160100000",
            "isSelected": false
          },
          {
            "id": 656,
            "name": "嘉兴",
            "parentId": 540,
            "code": "122100000",
            "isSelected": false
          },
          {
            "id": 659,
            "name": "金华",
            "parentId": 540,
            "code": "122400000",
            "isSelected": false
          },
          {
            "id": 769,
            "name": "江门",
            "parentId": 548,
            "code": "202100000",
            "isSelected": false
          },
          {
            "id": 694,
            "name": "九江",
            "parentId": 543,
            "code": "150800000",
            "isSelected": false
          },
          {
            "id": 709,
            "name": "济宁",
            "parentId": 544,
            "code": "162300000",
            "isSelected": false
          },
          {
            "id": 582,
            "name": "晋中",
            "parentId": 533,
            "code": "060700000",
            "isSelected": false
          },
          {
            "id": 782,
            "name": "揭阳",
            "parentId": 548,
            "code": "200600000",
            "isSelected": false
          },
          {
            "id": 726,
            "name": "焦作",
            "parentId": 545,
            "code": "171800000",
            "isSelected": false
          },
          {
            "id": 614,
            "name": "吉林",
            "parentId": 536,
            "code": "091000000",
            "isSelected": false
          },
          {
            "id": 698,
            "name": "吉安",
            "parentId": 543,
            "code": "150400000",
            "isSelected": false
          },
          {
            "id": 742,
            "name": "荆门",
            "parentId": 546,
            "code": "181700000",
            "isSelected": false
          },
          {
            "id": 692,
            "name": "景德镇",
            "parentId": 543,
            "code": "151000000",
            "isSelected": false
          },
          {
            "id": 605,
            "name": "锦州",
            "parentId": 535,
            "code": "081200000",
            "isSelected": false
          },
          {
            "id": 744,
            "name": "荆州",
            "parentId": 546,
            "code": "181900000",
            "isSelected": false
          },
          {
            "id": 629,
            "name": "佳木斯",
            "parentId": 537,
            "code": "101100000",
            "isSelected": false
          },
          {
            "id": 580,
            "name": "晋城",
            "parentId": 533,
            "code": "060900000",
            "isSelected": false
          },
          {
            "id": 872,
            "name": "酒泉",
            "parentId": 557,
            "code": "280600000",
            "isSelected": false
          },
          {
            "id": 865,
            "name": "嘉峪关",
            "parentId": 557,
            "code": "281300000",
            "isSelected": false
          },
          {
            "id": 866,
            "name": "金昌",
            "parentId": 557,
            "code": "281200000",
            "isSelected": false
          },
          {
            "id": 107292,
            "name": "济源",
            "parentId": 545,
            "code": "172000000",
            "isSelected": false
          }
        ],
        "K": [
          {
            "id": 831,
            "name": "昆明",
            "parentId": 554,
            "code": "250100000",
            "isSelected": false
          },
          {
            "id": 720,
            "name": "开封",
            "parentId": 545,
            "code": "171200000",
            "isSelected": false
          },
          {
            "id": 891,
            "name": "克拉玛依",
            "parentId": 560,
            "code": "311200000",
            "isSelected": false
          }
        ],
        "L": [
          {
            "id": 574,
            "name": "廊坊",
            "parentId": 532,
            "code": "050700000",
            "isSelected": false
          },
          {
            "id": 714,
            "name": "临沂",
            "parentId": 544,
            "code": "162800000",
            "isSelected": false
          },
          {
            "id": 864,
            "name": "兰州",
            "parentId": 557,
            "code": "280100000",
            "isSelected": false
          },
          {
            "id": 721,
            "name": "洛阳",
            "parentId": 545,
            "code": "171300000",
            "isSelected": false
          },
          {
            "id": 716,
            "name": "聊城",
            "parentId": 544,
            "code": "161500000",
            "isSelected": false
          },
          {
            "id": 642,
            "name": "连云港",
            "parentId": 539,
            "code": "112400000",
            "isSelected": false
          },
          {
            "id": 810,
            "name": "乐山",
            "parentId": 552,
            "code": "232200000",
            "isSelected": false
          },
          {
            "id": 786,
            "name": "柳州",
            "parentId": 549,
            "code": "211300000",
            "isSelected": false
          },
          {
            "id": 663,
            "name": "丽水",
            "parentId": 540,
            "code": "122800000",
            "isSelected": false
          },
          {
            "id": 847,
            "name": "拉萨",
            "parentId": 555,
            "code": "260100000",
            "isSelected": false
          },
          {
            "id": 585,
            "name": "临汾",
            "parentId": 533,
            "code": "060400000",
            "isSelected": false
          },
          {
            "id": 804,
            "name": "泸州",
            "parentId": 552,
            "code": "231600000",
            "isSelected": false
          },
          {
            "id": 689,
            "name": "龙岩",
            "parentId": 542,
            "code": "140400000",
            "isSelected": false
          },
          {
            "id": 677,
            "name": "六安",
            "parentId": 541,
            "code": "130400000",
            "isSelected": false
          },
          {
            "id": 821,
            "name": "凉山彝族自治州",
            "parentId": 552,
            "code": "230900000",
            "isSelected": false
          },
          {
            "id": 586,
            "name": "吕梁",
            "parentId": 533,
            "code": "060300000",
            "isSelected": false
          },
          {
            "id": 729,
            "name": "漯河",
            "parentId": 545,
            "code": "171000000",
            "isSelected": false
          },
          {
            "id": 843,
            "name": "丽江",
            "parentId": 554,
            "code": "250500000",
            "isSelected": false
          },
          {
            "id": 823,
            "name": "六盘水",
            "parentId": 553,
            "code": "240200000",
            "isSelected": false
          },
          {
            "id": 846,
            "name": "临沧",
            "parentId": 554,
            "code": "250200000",
            "isSelected": false
          },
          {
            "id": 761,
            "name": "娄底",
            "parentId": 547,
            "code": "190200000",
            "isSelected": false
          },
          {
            "id": 616,
            "name": "辽源",
            "parentId": 536,
            "code": "090800000",
            "isSelected": false
          },
          {
            "id": 108424,
            "name": "陵水黎族自治县",
            "parentId": 550,
            "code": "222700000",
            "isSelected": false
          },
          {
            "id": 904,
            "name": "来宾",
            "parentId": 549,
            "code": "210200000",
            "isSelected": false
          }
        ],
        "M": [
          {
            "id": 806,
            "name": "绵阳",
            "parentId": 552,
            "code": "231800000",
            "isSelected": false
          },
          {
            "id": 668,
            "name": "马鞍山",
            "parentId": 541,
            "code": "131500000",
            "isSelected": false
          },
          {
            "id": 812,
            "name": "眉山",
            "parentId": 552,
            "code": "231300000",
            "isSelected": false
          },
          {
            "id": 774,
            "name": "梅州",
            "parentId": 548,
            "code": "202600000",
            "isSelected": false
          },
          {
            "id": 771,
            "name": "茂名",
            "parentId": 548,
            "code": "202300000",
            "isSelected": false
          },
          {
            "id": 631,
            "name": "牡丹江",
            "parentId": 537,
            "code": "100900000",
            "isSelected": false
          }
        ],
        "N": [
          {
            "id": 635,
            "name": "南京",
            "parentId": 539,
            "code": "110100000",
            "isSelected": false
          },
          {
            "id": 654,
            "name": "宁波",
            "parentId": 540,
            "code": "121900000",
            "isSelected": false
          },
          {
            "id": 691,
            "name": "南昌",
            "parentId": 543,
            "code": "150100000",
            "isSelected": false
          },
          {
            "id": 785,
            "name": "南宁",
            "parentId": 549,
            "code": "210100000",
            "isSelected": false
          },
          {
            "id": 641,
            "name": "南通",
            "parentId": 539,
            "code": "112300000",
            "isSelected": false
          },
          {
            "id": 731,
            "name": "南阳",
            "parentId": 545,
            "code": "170300000",
            "isSelected": false
          },
          {
            "id": 690,
            "name": "宁德",
            "parentId": 542,
            "code": "140300000",
            "isSelected": false
          },
          {
            "id": 811,
            "name": "南充",
            "parentId": 552,
            "code": "232300000",
            "isSelected": false
          },
          {
            "id": 809,
            "name": "内江",
            "parentId": 552,
            "code": "232100000",
            "isSelected": false
          },
          {
            "id": 688,
            "name": "南平",
            "parentId": 542,
            "code": "140500000",
            "isSelected": false
          }
        ],
        "P": [
          {
            "id": 683,
            "name": "莆田",
            "parentId": 542,
            "code": "141000000",
            "isSelected": false
          },
          {
            "id": 727,
            "name": "濮阳",
            "parentId": 545,
            "code": "171900000",
            "isSelected": false
          },
          {
            "id": 693,
            "name": "萍乡",
            "parentId": 543,
            "code": "150900000",
            "isSelected": false
          },
          {
            "id": 722,
            "name": "平顶山",
            "parentId": 545,
            "code": "171400000",
            "isSelected": false
          },
          {
            "id": 609,
            "name": "盘锦",
            "parentId": 535,
            "code": "080800000",
            "isSelected": false
          },
          {
            "id": 10163,
            "name": "普洱",
            "parentId": 554,
            "code": "251700000",
            "isSelected": false
          },
          {
            "id": 871,
            "name": "平凉",
            "parentId": 557,
            "code": "280700000",
            "isSelected": false
          },
          {
            "id": 803,
            "name": "攀枝花",
            "parentId": 552,
            "code": "231500000",
            "isSelected": false
          }
        ],
        "Q": [
          {
            "id": 703,
            "name": "青岛",
            "parentId": 544,
            "code": "161700000",
            "isSelected": false
          },
          {
            "id": 685,
            "name": "泉州",
            "parentId": 542,
            "code": "140800000",
            "isSelected": false
          },
          {
            "id": 778,
            "name": "清远",
            "parentId": 548,
            "code": "200200000",
            "isSelected": false
          },
          {
            "id": 832,
            "name": "曲靖",
            "parentId": 554,
            "code": "251600000",
            "isSelected": false
          },
          {
            "id": 567,
            "name": "秦皇岛",
            "parentId": 532,
            "code": "051400000",
            "isSelected": false
          },
          {
            "id": 660,
            "name": "衢州",
            "parentId": 540,
            "code": "122500000",
            "isSelected": false
          },
          {
            "id": 873,
            "name": "庆阳",
            "parentId": 557,
            "code": "280500000",
            "isSelected": false
          },
          {
            "id": 623,
            "name": "齐齐哈尔",
            "parentId": 537,
            "code": "101700000",
            "isSelected": false
          },
          {
            "id": 108419,
            "name": "琼海",
            "parentId": 550,
            "code": "222200000",
            "isSelected": false
          },
          {
            "id": 830,
            "name": "黔南",
            "parentId": 553,
            "code": "240900000",
            "isSelected": false
          },
          {
            "id": 827,
            "name": "黔西南",
            "parentId": 553,
            "code": "240600000",
            "isSelected": false
          },
          {
            "id": 829,
            "name": "黔东南",
            "parentId": 553,
            "code": "240800000",
            "isSelected": false
          },
          {
            "id": 108402,
            "name": "潜江",
            "parentId": 546,
            "code": "180400000",
            "isSelected": false
          },
          {
            "id": 630,
            "name": "七台河",
            "parentId": 537,
            "code": "101000000",
            "isSelected": false
          }
        ],
        "R": [
          {
            "id": 712,
            "name": "日照",
            "parentId": 544,
            "code": "162600000",
            "isSelected": false
          }
        ],
        "S": [
          {
            "id": 6,
            "name": "上海",
            "parentId": 2,
            "code": "020100000",
            "isSelected": false
          },
          {
            "id": 765,
            "name": "深圳",
            "parentId": 548,
            "code": "201700000",
            "isSelected": false
          },
          {
            "id": 639,
            "name": "苏州",
            "parentId": 539,
            "code": "112100000",
            "isSelected": false
          },
          {
            "id": 599,
            "name": "沈阳",
            "parentId": 535,
            "code": "080100000",
            "isSelected": false
          },
          {
            "id": 565,
            "name": "石家庄",
            "parentId": 532,
            "code": "050100000",
            "isSelected": false
          },
          {
            "id": 658,
            "name": "绍兴",
            "parentId": 540,
            "code": "122300000",
            "isSelected": false
          },
          {
            "id": 767,
            "name": "汕头",
            "parentId": 548,
            "code": "201900000",
            "isSelected": false
          },
          {
            "id": 648,
            "name": "宿迁",
            "parentId": 539,
            "code": "113000000",
            "isSelected": false
          },
          {
            "id": 701,
            "name": "上饶",
            "parentId": 543,
            "code": "151100000",
            "isSelected": false
          },
          {
            "id": 800,
            "name": "三亚",
            "parentId": 550,
            "code": "221800000",
            "isSelected": false
          },
          {
            "id": 732,
            "name": "商丘",
            "parentId": 545,
            "code": "170400000",
            "isSelected": false
          },
          {
            "id": 764,
            "name": "韶关",
            "parentId": 548,
            "code": "201600000",
            "isSelected": false
          },
          {
            "id": 775,
            "name": "汕尾",
            "parentId": 548,
            "code": "201500000",
            "isSelected": false
          },
          {
            "id": 738,
            "name": "十堰",
            "parentId": 546,
            "code": "181300000",
            "isSelected": false
          },
          {
            "id": 753,
            "name": "邵阳",
            "parentId": 547,
            "code": "191000000",
            "isSelected": false
          },
          {
            "id": 675,
            "name": "宿州",
            "parentId": 541,
            "code": "130200000",
            "isSelected": false
          },
          {
            "id": 808,
            "name": "遂宁",
            "parentId": 552,
            "code": "232000000",
            "isSelected": false
          },
          {
            "id": 730,
            "name": "三门峡",
            "parentId": 545,
            "code": "170200000",
            "isSelected": false
          },
          {
            "id": 863,
            "name": "商洛",
            "parentId": 556,
            "code": "270300000",
            "isSelected": false
          },
          {
            "id": 747,
            "name": "随州",
            "parentId": 546,
            "code": "180200000",
            "isSelected": false
          },
          {
            "id": 633,
            "name": "绥化",
            "parentId": 537,
            "code": "100700000",
            "isSelected": false
          },
          {
            "id": 684,
            "name": "三明",
            "parentId": 542,
            "code": "140900000",
            "isSelected": false
          },
          {
            "id": 615,
            "name": "四平",
            "parentId": 536,
            "code": "090900000",
            "isSelected": false
          },
          {
            "id": 108393,
            "name": "石河子",
            "parentId": 560,
            "code": "310500000",
            "isSelected": false
          },
          {
            "id": 619,
            "name": "松原",
            "parentId": 536,
            "code": "090500000",
            "isSelected": false
          },
          {
            "id": 581,
            "name": "朔州",
            "parentId": 533,
            "code": "060800000",
            "isSelected": false
          },
          {
            "id": 849,
            "name": "山南",
            "parentId": 555,
            "code": "260300000",
            "isSelected": false
          },
          {
            "id": 907,
            "name": "三沙",
            "parentId": 550,
            "code": "220200000",
            "isSelected": false
          },
          {
            "id": 626,
            "name": "双鸭山",
            "parentId": 537,
            "code": "101400000",
            "isSelected": false
          }
        ],
        "T": [
          {
            "id": 7,
            "name": "天津",
            "parentId": 3,
            "code": "030100000",
            "isSelected": false
          },
          {
            "id": 576,
            "name": "太原",
            "parentId": 533,
            "code": "060100000",
            "isSelected": false
          },
          {
            "id": 662,
            "name": "台州",
            "parentId": 540,
            "code": "122700000",
            "isSelected": false
          },
          {
            "id": 566,
            "name": "唐山",
            "parentId": 532,
            "code": "051500000",
            "isSelected": false
          },
          {
            "id": 647,
            "name": "泰州",
            "parentId": 539,
            "code": "112900000",
            "isSelected": false
          },
          {
            "id": 710,
            "name": "泰安",
            "parentId": 544,
            "code": "162400000",
            "isSelected": false
          },
          {
            "id": 826,
            "name": "铜仁",
            "parentId": 553,
            "code": "240500000",
            "isSelected": false
          },
          {
            "id": 670,
            "name": "铜陵",
            "parentId": 541,
            "code": "131700000",
            "isSelected": false
          },
          {
            "id": 617,
            "name": "通化",
            "parentId": 536,
            "code": "090700000",
            "isSelected": false
          },
          {
            "id": 868,
            "name": "天水",
            "parentId": 557,
            "code": "281000000",
            "isSelected": false
          },
          {
            "id": 591,
            "name": "通辽",
            "parentId": 534,
            "code": "071000000",
            "isSelected": false
          },
          {
            "id": 610,
            "name": "铁岭",
            "parentId": 535,
            "code": "080700000",
            "isSelected": false
          },
          {
            "id": 855,
            "name": "铜川",
            "parentId": 556,
            "code": "271100000",
            "isSelected": false
          },
          {
            "id": 107384,
            "name": "天门",
            "parentId": 546,
            "code": "182100000",
            "isSelected": false
          }
        ],
        "W": [
          {
            "id": 736,
            "name": "武汉",
            "parentId": 546,
            "code": "180100000",
            "isSelected": false
          },
          {
            "id": 636,
            "name": "无锡",
            "parentId": 539,
            "code": "111800000",
            "isSelected": false
          },
          {
            "id": 655,
            "name": "温州",
            "parentId": 540,
            "code": "122000000",
            "isSelected": false
          },
          {
            "id": 708,
            "name": "潍坊",
            "parentId": 544,
            "code": "162200000",
            "isSelected": false
          },
          {
            "id": 665,
            "name": "芜湖",
            "parentId": 541,
            "code": "131200000",
            "isSelected": false
          },
          {
            "id": 711,
            "name": "威海",
            "parentId": 544,
            "code": "162500000",
            "isSelected": false
          },
          {
            "id": 890,
            "name": "乌鲁木齐",
            "parentId": 560,
            "code": "310100000",
            "isSelected": false
          },
          {
            "id": 858,
            "name": "渭南",
            "parentId": 556,
            "code": "270800000",
            "isSelected": false
          },
          {
            "id": 788,
            "name": "梧州",
            "parentId": 549,
            "code": "211100000",
            "isSelected": false
          },
          {
            "id": 838,
            "name": "文山",
            "parentId": 554,
            "code": "251000000",
            "isSelected": false
          },
          {
            "id": 108425,
            "name": "文昌",
            "parentId": 550,
            "code": "222800000",
            "isSelected": false
          },
          {
            "id": 108423,
            "name": "万宁",
            "parentId": 550,
            "code": "222600000",
            "isSelected": false
          },
          {
            "id": 589,
            "name": "乌海",
            "parentId": 534,
            "code": "071200000",
            "isSelected": false
          },
          {
            "id": 596,
            "name": "乌兰察布",
            "parentId": 534,
            "code": "070500000",
            "isSelected": false
          }
        ],
        "X": [
          {
            "id": 854,
            "name": "西安",
            "parentId": 556,
            "code": "270100000",
            "isSelected": false
          },
          {
            "id": 682,
            "name": "厦门",
            "parentId": 542,
            "code": "141100000",
            "isSelected": false
          },
          {
            "id": 637,
            "name": "徐州",
            "parentId": 539,
            "code": "111900000",
            "isSelected": false
          },
          {
            "id": 725,
            "name": "新乡",
            "parentId": 545,
            "code": "171700000",
            "isSelected": false
          },
          {
            "id": 569,
            "name": "邢台",
            "parentId": 532,
            "code": "051200000",
            "isSelected": false
          },
          {
            "id": 740,
            "name": "襄阳",
            "parentId": 546,
            "code": "181500000",
            "isSelected": false
          },
          {
            "id": 857,
            "name": "咸阳",
            "parentId": 556,
            "code": "270900000",
            "isSelected": false
          },
          {
            "id": 878,
            "name": "西宁",
            "parentId": 558,
            "code": "290100000",
            "isSelected": false
          },
          {
            "id": 105794,
            "name": "香港",
            "parentId": 561,
            "code": "320100000",
            "isSelected": false
          },
          {
            "id": 733,
            "name": "信阳",
            "parentId": 545,
            "code": "170500000",
            "isSelected": false
          },
          {
            "id": 728,
            "name": "许昌",
            "parentId": 545,
            "code": "171100000",
            "isSelected": false
          },
          {
            "id": 743,
            "name": "孝感",
            "parentId": 546,
            "code": "181800000",
            "isSelected": false
          },
          {
            "id": 751,
            "name": "湘潭",
            "parentId": 547,
            "code": "191200000",
            "isSelected": false
          },
          {
            "id": 746,
            "name": "咸宁",
            "parentId": 546,
            "code": "181000000",
            "isSelected": false
          },
          {
            "id": 108403,
            "name": "仙桃",
            "parentId": 546,
            "code": "180500000",
            "isSelected": false
          },
          {
            "id": 695,
            "name": "新余",
            "parentId": 543,
            "code": "150700000",
            "isSelected": false
          },
          {
            "id": 680,
            "name": "宣城",
            "parentId": 541,
            "code": "130700000",
            "isSelected": false
          },
          {
            "id": 594,
            "name": "兴安盟",
            "parentId": 534,
            "code": "070700000",
            "isSelected": false
          },
          {
            "id": 840,
            "name": "西双版纳",
            "parentId": 554,
            "code": "250800000",
            "isSelected": false
          },
          {
            "id": 595,
            "name": "锡林郭勒盟",
            "parentId": 534,
            "code": "070600000",
            "isSelected": false
          },
          {
            "id": 762,
            "name": "湘西土家族苗族自治州",
            "parentId": 547,
            "code": "191400000",
            "isSelected": false
          },
          {
            "id": 584,
            "name": "忻州",
            "parentId": 533,
            "code": "060500000",
            "isSelected": false
          }
        ],
        "Y": [
          {
            "id": 707,
            "name": "烟台",
            "parentId": 544,
            "code": "162100000",
            "isSelected": false
          },
          {
            "id": 645,
            "name": "扬州",
            "parentId": 539,
            "code": "112700000",
            "isSelected": false
          },
          {
            "id": 886,
            "name": "银川",
            "parentId": 559,
            "code": "300100000",
            "isSelected": false
          },
          {
            "id": 644,
            "name": "盐城",
            "parentId": 539,
            "code": "112600000",
            "isSelected": false
          },
          {
            "id": 813,
            "name": "宜宾",
            "parentId": 552,
            "code": "231200000",
            "isSelected": false
          },
          {
            "id": 739,
            "name": "宜昌",
            "parentId": 546,
            "code": "181400000",
            "isSelected": false
          },
          {
            "id": 583,
            "name": "运城",
            "parentId": 533,
            "code": "060600000",
            "isSelected": false
          },
          {
            "id": 699,
            "name": "宜春",
            "parentId": 543,
            "code": "150300000",
            "isSelected": false
          },
          {
            "id": 777,
            "name": "阳江",
            "parentId": 548,
            "code": "201300000",
            "isSelected": false
          },
          {
            "id": 754,
            "name": "岳阳",
            "parentId": 547,
            "code": "190900000",
            "isSelected": false
          },
          {
            "id": 861,
            "name": "榆林",
            "parentId": 556,
            "code": "270500000",
            "isSelected": false
          },
          {
            "id": 793,
            "name": "玉林",
            "parentId": 549,
            "code": "210600000",
            "isSelected": false
          },
          {
            "id": 759,
            "name": "永州",
            "parentId": 547,
            "code": "190400000",
            "isSelected": false
          },
          {
            "id": 606,
            "name": "营口",
            "parentId": 535,
            "code": "081100000",
            "isSelected": false
          },
          {
            "id": 816,
            "name": "雅安",
            "parentId": 552,
            "code": "230400000",
            "isSelected": false
          },
          {
            "id": 757,
            "name": "益阳",
            "parentId": 547,
            "code": "190600000",
            "isSelected": false
          },
          {
            "id": 621,
            "name": "延边",
            "parentId": 536,
            "code": "090300000",
            "isSelected": false
          },
          {
            "id": 833,
            "name": "玉溪",
            "parentId": 554,
            "code": "251500000",
            "isSelected": false
          },
          {
            "id": 578,
            "name": "阳泉",
            "parentId": 533,
            "code": "061100000",
            "isSelected": false
          },
          {
            "id": 859,
            "name": "延安",
            "parentId": 556,
            "code": "270700000",
            "isSelected": false
          },
          {
            "id": 696,
            "name": "鹰潭",
            "parentId": 543,
            "code": "150600000",
            "isSelected": false
          },
          {
            "id": 901,
            "name": "伊犁",
            "parentId": 560,
            "code": "310200000",
            "isSelected": false
          },
          {
            "id": 783,
            "name": "云浮",
            "parentId": 548,
            "code": "200700000",
            "isSelected": false
          },
          {
            "id": 628,
            "name": "伊春",
            "parentId": 537,
            "code": "101200000",
            "isSelected": false
          }
        ],
        "Z": [
          {
            "id": 719,
            "name": "郑州",
            "parentId": 545,
            "code": "170100000",
            "isSelected": false
          },
          {
            "id": 766,
            "name": "珠海",
            "parentId": 548,
            "code": "201800000",
            "isSelected": false
          },
          {
            "id": 780,
            "name": "中山",
            "parentId": 548,
            "code": "200400000",
            "isSelected": false
          },
          {
            "id": 704,
            "name": "淄博",
            "parentId": 544,
            "code": "161800000",
            "isSelected": false
          },
          {
            "id": 772,
            "name": "肇庆",
            "parentId": 548,
            "code": "202400000",
            "isSelected": false
          },
          {
            "id": 687,
            "name": "漳州",
            "parentId": 542,
            "code": "140600000",
            "isSelected": false
          },
          {
            "id": 646,
            "name": "镇江",
            "parentId": 539,
            "code": "112800000",
            "isSelected": false
          },
          {
            "id": 770,
            "name": "湛江",
            "parentId": 548,
            "code": "202200000",
            "isSelected": false
          },
          {
            "id": 824,
            "name": "遵义",
            "parentId": 553,
            "code": "240300000",
            "isSelected": false
          },
          {
            "id": 735,
            "name": "驻马店",
            "parentId": 545,
            "code": "170700000",
            "isSelected": false
          },
          {
            "id": 750,
            "name": "株洲",
            "parentId": 547,
            "code": "191300000",
            "isSelected": false
          },
          {
            "id": 571,
            "name": "张家口",
            "parentId": 532,
            "code": "051000000",
            "isSelected": false
          },
          {
            "id": 734,
            "name": "周口",
            "parentId": 545,
            "code": "170600000",
            "isSelected": false
          },
          {
            "id": 579,
            "name": "长治",
            "parentId": 533,
            "code": "061000000",
            "isSelected": false
          },
          {
            "id": 705,
            "name": "枣庄",
            "parentId": 544,
            "code": "161900000",
            "isSelected": false
          },
          {
            "id": 818,
            "name": "资阳",
            "parentId": 552,
            "code": "230600000",
            "isSelected": false
          },
          {
            "id": 661,
            "name": "舟山",
            "parentId": 540,
            "code": "122600000",
            "isSelected": false
          },
          {
            "id": 802,
            "name": "自贡",
            "parentId": 552,
            "code": "231400000",
            "isSelected": false
          },
          {
            "id": 835,
            "name": "昭通",
            "parentId": 554,
            "code": "251300000",
            "isSelected": false
          },
          {
            "id": 906,
            "name": "中卫",
            "parentId": 559,
            "code": "300500000",
            "isSelected": false
          },
          {
            "id": 870,
            "name": "张掖",
            "parentId": 557,
            "code": "280800000",
            "isSelected": false
          },
          {
            "id": 756,
            "name": "张家界",
            "parentId": 547,
            "code": "190700000",
            "isSelected": false
          }
        ]
      }
    },
    "rows": [

    ]
  }
}

测试代码

# jsonpath_lagou.py

import urllib2
import jsonpath
import json

url = 'http://www.lagou.com/lbs/getAllCitySearchLabels.json'
request =urllib2.Request(url)
response = urllib2.urlopen(request)
html = response.read()

# 把json格式字符串转换成python对象
jsonobj = json.loads(html)

# 从根节点开始,匹配name节点
citylist = jsonpath.jsonpath(jsonobj,'$..name')

print citylist
print type(citylist)
fp = open('city.json','w')

content = json.dumps(citylist, ensure_ascii=False)
print content

fp.write(content.encode('utf-8'))
fp.close()

注意事项:
json.loads() 是把 Json格式字符串解码转换成Python对象,如果在json.loads的时候出错,要注意被解码的Json字符的编码,如果传入的字符串的编码不是UTF-8的话,需要指定字符编码的参数encoding
如:

dataDict = json.loads(jsonStrGBK);

jsonStrGBK是JSON字符串,假设其编码本身是非UTF-8的话而是GBK 的,那么上述代码会导致出错,改为对应的:

    dataDict = json.loads(jsonStrGBK, encoding="GBK");

附:字符串编码转换
这是中国程序员最苦逼的地方,什么乱码之类的几乎都是由汉字引起的。 其实编码问题很好搞定,只要记住一点:
任何平台的任何编码 都能和 Unicode 互相转换
UTF-8 与 GBK 互相转换,那就先把UTF-8转换成Unicode,再从Unicode转换成GBK,反之同理。


# 这是一个 UTF-8 编码的字符串
utf8Str = "你好地球"

# 1. 将 UTF-8 编码的字符串 转换成 Unicode 编码
unicodeStr = utf8Str.decode("UTF-8")

# 2. 再将 Unicode 编码格式字符串 转换成 GBK 编码
gbkData = unicodeStr.encode("GBK")

# 1. 再将 GBK 编码格式字符串 转化成 Unicode
unicodeStr = gbkData.decode("gbk")

# 2. 再将 Unicode 编码格式字符串转换成 UTF-8
utf8Str = unicodeStr.encode("UTF-8")

decode的作用是将其他编码的字符串转换成 Unicode 编码;encode的作用是将 Unicode 编码转换成其他编码的字符串。