为啥 JSON 查询如果有一个元素则返回对象,如果有多个则返回列表?
Posted
技术标签:
【中文标题】为啥 JSON 查询如果有一个元素则返回对象,如果有多个则返回列表?【英文标题】:Why do JSON queries return object if there is one element, list if more than one?为什么 JSON 查询如果有一个元素则返回对象,如果有多个则返回列表? 【发布时间】:2015-08-21 10:24:00 【问题描述】:我不得不将 python 脚本从 python2 重写为 python 3 来解决我最简单的编码问题。我不得不从 mysqldb 转移到似乎使用相同语法的 pymysql。我访问了 pymysql 的 github[1] 站点并通过以下示例注意到,当查询结果是一个元素时,它返回一个 JSON 对象,但当它返回多个时,它返回一个列表。
总是返回一个包含 0、1 或任何数量元素的列表不是更一致吗?为什么这样做?
注意:为了避免在 pymysql 中出现这种行为,只需从以下位置删除 cursorclass 参数:
# Connect to the database
connection = pymysql.connect(host='localhost',user='user',
passwd='passwd', db='db', charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
[1]https://github.com/PyMySQL/PyMySQL/
【问题讨论】:
【参考方案1】:根据 JSON API 规范,此行为是由于 v1.0rc1 中的重大更改:
重大变化:单一资源对象现在应该是 用 JSON 对象而不是数组表示。这允许 请求和响应文档中的对称表示,以及 作为 PUT/POST 请求和 PATCH 操作。它还简化了 不支持批处理操作的实现(即它们可以允许对象而不是数组)。
你可以看看here
【讨论】:
以上是关于为啥 JSON 查询如果有一个元素则返回对象,如果有多个则返回列表?的主要内容,如果未能解决你的问题,请参考以下文章
反序列化具有一个元素的列表,如果列表大小为 1,则直接作为元素本身(Json 格式)