如何讀寫json資料?
阿新 • • 發佈:2020-07-19
需求:
在web應用中常用JSON(JavaScript ObjectNotation)格式傳輸資料,例如我們利用baidu語音識別伺服器做語音識別,將本地音訊資料post到baidu語音識別伺服器,伺服器響應為json字串:
{"corpus_no":"64444888973976730779908","err_msg":"success","err_no":0,"result":["你好,"],"sn":"4183597886765789977954455606"}
在python中如何讀寫json資料?
思路:
使用標準庫中的josn模組,其中的loads,dump函式可以完成對json資料的讀寫
程式碼:
import requests import json # 錄音 from record import Record record = Record(channels=1) audioData = record.record(2) # 獲取token from secret import API_KEY,SECRET_KEY authurl = 'https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}'.format(API_KEY,SECRET_KEY) response = requests.get(authurl) res = json.loads(response.content) # 將json格式的字串轉化為一個python物件,得到一個字典 token = res['access_token'] print(token) # 語音識別 cuid = 'xxxxxxxxx' srvUrl = 'http://vop.baidu.com/server_api'+'?cuid=' + cuid +'&token=' + token httpHeader = { 'Content-Type':'audio/wav; rate = 8000', } response = requests.post(srvUrl,headers=httpHeader,data=audioData) res = json.loads(response.content) text = res['result'][0] print('\n識別結果:') print(text) ======================================================== In [153]: l = [1,2,'abc',{'name':'Bob','age':13}] In [154]: json.dumps(l) Out[154]: '[1, 2, "abc", {"name": "Bob", "age": 13}]' In [155]: d = {'a':None,'a':5,'c':'abc'} In [156]: json.dumps(d) Out[156]: '{"a": 5, "c": "abc"}' In [157]: d = {'b':None,'a':5,'c':'abc'} In [158]: json.dumps(d) # None這裡變為null Out[158]: '{"b": null, "a": 5, "c": "abc"}' In [159]: json.dumps(d,separators=[',',':']) # 在網路傳輸中,去除鍵值之間的空格。 ...: ...: Out[159]: '{"b":null,"a":5,"c":"abc"}' In [160]: json.dumps(d,sort_keys=True) # 按鍵來進行排序 Out[160]: '{"a": 5, "b": null, "c": "abc"}' In [162]: l2 = json.loads('[1, 2, "abc", {"name": "Bob", "age": 13}]') # 將json字串轉化為python的物件。 In [163]: l2 Out[163]: [1, 2, 'abc', {'name': 'Bob', 'age': 13}]