str轉json | python的list、dict轉json string | json讀寫 | jsonpath操做

  str轉json:python

import json

#json字符串,js類型跟字符串有關係,平時最可能是字典
mydict='{"name":"yincheng","QQ":["758564524","1234"]}'  #dict
mydict='[1,2,3,4,5,6]'  #list
print( json.loads(mydict) )
print( type( json.loads(mydict) ) )

  python的list、dict轉json stringjson

import json
import chardet

#json字符串,json類型根字符串有關係,平時最可能是字典
mydict={"name":"yincheng","QQ":["77025077","12345"]}
mydict=[1,2,3,4,5,6]
print( json.dumps(mydict) )
print( type( json.dumps(mydict) ) )
#查看編碼
print( chardet.detect( json.dumps(mydict) ) )

  json讀寫:數組

import json
''' 
#寫入  dump
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)
'''

#讀取  load
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)
for  data in strDict:
    print(data,strDict[data])

  jsonpath操做:jsonp

import urllib
import urllib.request
import jsonpath
import json
import chardet
#jsonpath
# $ 根節點  ;  @ 現行節點  ;  . or [] 取子節點 ;  .. 無論位置,選擇符合條件的條件
# * 匹配全部元素節點  ;[] 迭代器標識(可在裏邊作簡單的操做,如數組下標,根據內容選值等);  ?() 支持過濾操做
url="https://www.lagou.com/lbs/getAllCitySearchLabels.json"
jsonstr=urllib.request.urlopen(url).read().decode('utf-8') #抓取網頁的json數據
jsontree=json.loads(jsonstr)  #轉化爲json對象
#mylist=jsonpath.jsonpath(jsontree,"$..name")   #$根節點 ;  $..name 包含name的節點
#mylist=jsonpath.jsonpath(jsontree,"$..id") #$根節點 ;  $..id 包含id的節點
#mylist=jsonpath.jsonpath(jsontree,"$..code") #$根節點 ;  $..code 包含code的節點
mylist=jsonpath.jsonpath(jsontree,"$.content") #第一個節點
mylist=jsonpath.jsonpath(jsontree,"$.content.data") #第二個節點
mylist= jsonpath.jsonpath(jsontree,"$.content.data.allCitySearchLabels") #第三個節點
mylist= jsonpath.jsonpath(jsontree,"$..allCitySearchLabels") #第三個節點
mylist= jsonpath.jsonpath(jsontree,"$.content.data[]") #第二個節點的孩子節點
mylist= jsonpath.jsonpath(jsontree,"$*name")  #判斷全部節點是否包含name
mylist= jsonpath.jsonpath(jsontree,"$.content..allCitySearchLabels.*") #allCitySearchLabel後續全部節點
for line in mylist:
    print(line)
    for key in line:
        print(key,line[key])

mylist= jsonpath.jsonpath(jsontree,"$.content.data.allCitySearchLabels")
for line in mylist:
    print(line)
    for key  in line:
        print(key,line[key])

mylist= jsonpath.jsonpath(jsontree,"$.content.data.allCitySearchLabels")
for line in mylist:
    print(line)
    for key  in line:
        print(key,line[key])
        for  data  in line[key]:
            print(data)
相關文章
相關標籤/搜索