Python3 Web端JSON通信实现:解决编码与格式化难题

山间有风
山间有风
发布时间:2026-10-13| 2人浏览过
原创

本文介绍使用Python3实现Web端JSON通信的方法,涵盖GET与POST协议。重点解决POST数据编码、中文乱码及JSON输出格式化问题,提供utf-8转换与json.dumps配置代码,助力自动化测试系统开发。

此前曾使用Python3实现过TCP协议通信,随后又完成了HTTP协议的通信功能。如今公司计划开发一套自动测试系统,

经过一下午的尝试,发现基于JSON格式的实现方式可以更加简洁,具体代码如下:简要说明一下,通常与服务器进行通信主要涉及两个部分,一部分是GET协议,另一部分是POST协议,

GET协议的操作非常直接,可以直接访问;而POST协议则需要利用data数据,程序会自动识别数据类型。

在编写代码的过程中遇到了三个主要问题:

1. 在实现POST协议时曾出现错误,

这主要涉及数据格式的问题,解决方法很简单,即将数据转换为utf-8格式:bytes(data, 'utf8') ,

2. 在获取JSON数据时,若其中包含中文,会遇到编码问题

此时数据可能表现为0xaa0xbb0xcc0xdd这样的编码形式,在加载JSON时调用utf-8即可解决,使用以下代码:json.loads(rawtext.decode('utf8'))

3. 打印JSON时,结果往往是一行非常长的字符串

这种长字符串阅读起来非常痛苦,难以看清JSON内部各个对象之间的关系。网上有人建议使用json.tool方法解决,但这主要针对命令行环境,而在调试过程中,我们更希望直接打印出可读的结果,

可以采用如下代码:print (json.dumps(jsonStr, sort_keys=False, ensure_ascii= False, indent=2)) ,这里需要注意ensure_ascii必须设置为False,否则当内容包含中文时

看到的又是0xx之类的乱码。其中,indent=2表示对JSON显示进行格式化,sort_keys则表示该JSON无需进行排序

#!/usr/bin/evn python3
#coding=utf-8

# 针对web端json协议的通信库,通信协议为json,传出的data为json格式,接收的数据也是json格式
# 外界调用时可先初始化web_json类,如下所示:
# get调用
# web = web_json("http://baidu.com/")
# params = "abcd/select/100000?userID=1234&groupID=79"
# web.url_get(params)
# 
# post调用
# web = web_json("http://baidu.com/")
# params = "abcd/select/100000"
# data = '{"name": "jack", "id": "1"}'
# web.url_post(params, data)

from urllib.request import urlopen
from urllib.parse import quote
import json

class web_json:
  def __init__(self, base_url):
    self.base_url = base_url
    
  def get_url_data(self, params, data):
    web = urlopen(self.base_url + params, data)
    print (web.url)
    print ("status: " , web.status)
    rawtext = web.read()
    jsonStr = json.loads(rawtext.decode('utf8'))  
    print (json.dumps(jsonStr, sort_keys=False, ensure_ascii= False, indent=2))
    return jsonStr    
  
  # get方法
  def url_get(self, params):
    return self.get_url_data(params, None)
  
  # post方法
  def url_post(self, params, data):
    data=bytes(data, 'utf8')
    return self.get_url_data(params, data)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。