python發送json
1. python json 內有多個json
Json簡介:Json,全名 JavaScript Object Notation,是一種輕量級的數據交換格式。Json最廣泛的應用是作為AJAX中web伺服器和客戶端的通訊的數據格式。現在也常用於http請求中,所以對json的各種學習,是自然而然的事情。Python的官網網址:
Json API 使用:python在版本2.6之前,是需要先下載包,安裝後才能使用的,有點類似現在的RF內使用SeleniumLibrary一樣。但是在2.6中,官方文檔明顯指出,「有一些重要的新的軟體包添加到了標准庫,比如multiprocessing 和json,但是跟python 3比,2.6的這些包不會引進更多的新功能。"於是安裝python2.6以上版本的童鞋,可以不需要下載json包,直接在所需的地方就import json 即可使用,在安裝目錄下的Lib 下,看到這兩個包(點進去仔細閱讀這些源碼,會有更多的收獲,)如下文所示:
2. 怎麼用python發json數據
#讀 file = 'test.json' fp = open(file, 'r') dict = json.mp(fp.read()) fp.close() #寫 testDict = {'a':1,'b':2} file = 'my.json' fp = open(file,'w+') fp.write(json.loads(testDict)) fp.close()
3. python如何模擬前端通過JSON.stringify給後端發送數據
一般介面測試直接用Postman比較方便~
4. python怎麼轉化成json格式
如果datas是Python的原始數據,並且datas中沒有非ascii碼,可以使用如下語句轉換為json格式:
import
json
json.mps(datas)
當datas中含有中文等非ascii字元時,可以使用如下參數:
json.mps(datas,
ensure_ascii=False)
如果想美化輸出格式,可以使用indent參數:
json.mps(datas,
indent=4)
5. Python3中,建立一個socket客戶端向服務端發送json數據是報 unknown url type,為什麼呢
參考這個客戶端程序,我覺得是你的服務端有問題
import socket
HOST = '127.0.0.1' # 伺服器的主機名或者 IP 地址
PORT = 65432 # 伺服器使用的埠
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
服務端寫法
import socket
HOST = '127.0.0.1' # 標準的回環地址 (localhost)
PORT = 65432 # 監聽的埠 (非系統級的埠: 大於 1023)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
6. python中為什麼用json有什麼作用
今天我也在這個問題上糾結很久。最後才想明白,我來回答下。
網上很多網友總結了json模塊的用法,但沒說json模塊有什麼用,幹嘛要有這個模塊。可能都明白、太簡單,覺得沒必要說。但作為小白的我不明白,而且在練習使用load()和mp()時遇到錯誤。
首先糾正,json格式不是字元串。json與python裡面的字典是一樣的格式。
python的json模塊四個方法的作用為:
mps()#把數據轉成字元串;
loads()#把字元串符號『』去掉;
mp(x,f)#將x的內容直接寫入f,不改變格式;
load(x,f)#讀取f保存為x,同樣不改變格式。
重點來了,f = open()下的read()的方法,輸出是字元串,wirte()方法的輸入也必須是字元串。
結論:因為f=open()下的讀寫方法都必須是字元串,很不方便。而非字元串的數據大多是json格式,所以就有了json模塊。方便讀寫非字元串的數據。
因為這個目的,json模塊的loads()和mps()方法有些雞肋,還造成困擾,因為明明json不是字元串,幹嘛要轉成字元串,另外mp()和load()方法表面上和它們不一樣。只有明白json模塊的目的,才會搞明白。
在python 3.6的說明文檔中,把json模塊放在了《7.2.文件讀寫》部分。我也是看到這里才去練習json模塊。但出問題,有些糊塗,明白json模塊的作用後,才更清楚幹嘛把json模塊放這里。
小白的淺見,若錯誤請指教,謝謝。
7. 如何用python獲得跨域請求的json數據
首先找到獲取所需信息的請求,之後查看請求地址和請求參數,使用同樣的請求發送數據,如果能得到就OK,得不到的話,可以看一下瀏覽器的請求代碼,火狐和Chrome都可以查看,然後把這些請求頭加到代碼中,就可以查到了
如果得到的是亂碼,有可能被壓縮了,解壓一下就好,一般為gzip類型壓縮,請求頭Accept-Encoding:gzip是這樣的。
8. python中使用socket編程,如何能夠通過UDP傳遞一個列表類型的數據
Python中的 list 或者 dict 都可以轉成JSON字元串來發送,接收後再轉回來。
首先
importjson
然後,把 list 或 dict 轉成 JSON
json_string=json.mps(list_or_dict)
如果你用的是Python3,這里的 json_string 會是 str 類型(即Python2的unicode類型),可能需要編碼一下:
if type(json_string) == six.text_type:
json_string = json_string.encode('UTF-8')
用socket發送過去,例如
s.sendto(json_string,address)
對方用socket接收,例如
json_string,addr=s.recvfrom(2048)
把JSON轉成 list 或 dict
list_or_dict=json.loads(json_string)
下面是個完整的例子:
client.py
#!/usr/bin/envpython
#-*-coding:UTF-8-*-
importsocket
importjson
importsix
address=('127.0.0.1',31500)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
mylist=[1,2,3,4,5,6,7,8,9,10]
json_string=json.mps(mylist)
iftype(json_string)==six.text_type:
json_string=json_string.encode('UTF-8')
s.sendto(json_string,address)
s.close()
server.py
#!/usr/bin/envpython
#-*-coding:UTF-8-*-
importsocket
importjson
address=('127.0.0.1',31500)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(address)
json_string,addr=s.recvfrom(2048)
mylist=json.loads(json_string)
print(mylist)
s.close()
請先運行server.py,再運行client.py
9. python發送數據包獲取返回數據(其他的語言能實現也可以)
使用網路翻譯的一個例子,可以翻譯你輸入的文字,發送需要的內容,獲取返回的數據
import urllib.request
import urllib.parse
import json
import time
while True:
url = 'http://fanyi..com/v2transapi'
words = input("輸入你想翻譯的內容:")
data = {}
data['from'] = 'auto'
data['to'] = 'auto'
data['query'] = words
data['transtype'] = 'translang'
data['simple_means_flag'] = '3'
data = urllib.parse.urlencode(data).encode('utf-8')
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
}
req = urllib.request.Request(url, data, headers)
req.add_header('Referer', 'http://fanyi..com/')
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
js = json.loads(html)
# print(html)
# print(js)
print(js['trans_result']['data'][0]['dst'])
time.sleep(1)
10. 如何使用 python3+urllib 發送一個 application/json 的請求
head = {
'Accept': '*/*',
'Host': '',
'Connection': 'keep-alive',
'Content-Length': '245',
'Origin': '',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome'
'/51.0.2704.103 Safari/537.36',
'Content-Type': 'application/json',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Referer': '',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Accept-Encoding': 'gzip, deflate'
}
cookie = cookiejar.CookieJar()
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
opener.addheader(head)
# 其他為了獲取 cookie 的各種請求。
.....
.....
.....
parsed_request_data = json.mps(self.hotel_search_request_data).encode()
response = openner.open(self.hotel_search_url, parsed_request_data)