1
tianzhongs 114 天前
可以使用自定义的编码方式来处理这个问题。思路如下:
对于 param 中的数据,将其键值对按照一定规则拼接成字符串,而不是直接使用 JSON 序列化。 例如,如果 param 是 {"key1": "value1", "key2": "value2"},可以将其拼接为 key1=value1&key2=value2 的形式。 在前端和后端约定好这个编码规则。 前端在发送请求时,按照这个规则将 param 中的数据拼接成字符串,然后将整个渲染参数对象构建成 URL 的查询参数形式。 后端接收到请求后,先解析出 code 和 type ,然后根据约定的规则将 param 部分的字符串再解析回键值对的形式。 这样做的好处有: 不需要依赖复杂的第三方库或者特殊的设置(如 ensure_ascii=False ),并且完全符合只能使用 GET 请求且参数不能嵌套的要求。 避免了 JSON 序列化可能带来的转义问题,同时也没有增加过多的复杂操作(相比于先序列化再 base64 编码的方式)。 输出的结果相对简洁且人类可读程度较高,只要了解规则,在调试等情况下也比较容易理解。 |
2
sagaxu 114 天前
JSON 编码解码,是 JSON 规范,不会因为转义不转义失败。
URL 的 Query String ,也有自己的编码规范。 两件事情是完全不相干的,要分别处理,难不成你指望 JSON 序列化后的东西直接拼 URL 里用? |
3
tolbkni 114 天前
```python
from urllib.parse import parse_qs y = parse_qs('a=c') ``` |
4
gosky OP @tianzhongs param 内部是嵌套的哦
|
7
MoYi123 114 天前 1
问题最关键的 param 是怎么样子的, 让你用 param: "..." 这样三个点跳过了.
|