Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 28|回复: 0

python返回json字符串

[复制链接]

486

主题

666

帖子

3923

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3923
发表于 7 天前 | 显示全部楼层 |阅读模式
return HttpResponse(json.dumps(D,ensure_ascii=False),content_type="application/json,charset=utf-8")
        # TODO:  json.dumps返回的是什么?具体数据。能否被别的语言识别(比如java?)


json.dumps() 返回的是什么?

1️⃣ json.dumps() 返回的是 JSON 格式的字符串
  1. # Python 字典对象
  2. D = {
  3.     "width": 100,
  4.     "height": 200,
  5.     "sites": [
  6.         {"name": "Google", "value": 100, "pos": [0, 1]},
  7.         {"name": "Runoob", "value": 1000, "pos": [100, 150]}
  8.     ]
  9. }

  10. # json.dumps() 将 Python 字典转换为 JSON 字符串
  11. json_string = json.dumps(D, ensure_ascii=False)

  12. # 返回结果示例:
  13. # '{"width": 100, "height": 200, "sites": [{"name": "Google", "value": 100, "pos": [0, 1]}, ...]}'
复制代码
2️⃣ 能否被其他语言(如 Java)识别?
完全可以! JSON 是一种跨语言的通用数据格式。从你的测试代码可以看到:
PHP 调用示例(treemap_api.php):
  1. $ret = call(URL, $args);
  2. $ret = json_decode($ret, true);  // PHP 可以解析返回的 JSON
复制代码
Python 调用示例:
  1. data_json = json.dumps(treemap)  # 发送 JSON 字符串
  2. r_json = requests.post(url_json, json=data_json)

  3. # 接收响应
  4. bytes = r_json.content
  5. dictionary = json.loads(bytes)  # 将 JSON 字符串转换回 Python 字典
复制代码
3️⃣ 实际返回的数据结构
根据代码,treat_data 函数返回两种可能的 JSON 格式:
✅ 成功时返回:
  1. {
  2.     "width": 100,
  3.     "height": 200,
  4.     "sites": [
  5.         {
  6.             "name": "Google",
  7.             "pos": [0, 0],
  8.             "w": 50,
  9.             "h": 80,
  10.             "size": 637313880
  11.         },
  12.         {
  13.             "name": "Runoob",
  14.             "pos": [50, 0],
  15.             "w": 50,
  16.             "h": 120,
  17.             "size": 13953508178
  18.         }
  19.     ]
  20. }
复制代码
❌ 错误时返回:

  1. {
  2.     "error": "52001"  // 或 "52002"
  3. }
复制代码
4️⃣ 完整的跨语言调用流程
  1. Python 服务器端:
  2. Python 字典 D → json.dumps() → JSON 字符串 → HttpResponse → HTTP 响应体
  3.                      ↓
  4. 网络传输 (HTTP/HTTPS)
  5.                      ↓
  6. 客户端(PHP/Java/Python 等):
  7. 接收响应 → json.decode()/json.loads() → 各自语言的数据结构
复制代码
5️⃣ 为什么需要 ensure_ascii=False?
  1. # 不使用 ensure_ascii=False
  2. json.dumps({"name": "测试"})  
  3. # 返回:"{"name": "\\u6d4b\\u8bd5"}"  (中文变成 Unicode 转义)

  4. # 使用 ensure_ascii=False
  5. json.dumps({"name": "测试"}, ensure_ascii=False)  
  6. # 返回:"{"name": "测试"}"  (保持原始中文)
复制代码
总结
✅ json.dumps() 返回 JSON 格式的字符串
✅ 完全支持跨语言交互(Java、PHP、JavaScript 等都可以解析)
✅ 这是标准的 Web API 数据交换格式
✅ 类似于 Java 中的 Jackson 或 Gson 库的功能


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2026-3-30 03:28 , Processed in 0.016579 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表