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)