为什么 JSON 查询 return 对象如果有一个元素,如果多个元素则列出?

Why do JSON queries return object if there is one element, list if more than one?

我不得不将 python 脚本从 python2 重写为 python 3 以解决我遇到的最简单方法的编码问题。我不得不从 mysqldb 转移到 pymysql,它似乎使用相同的语法。我访问了 pymysql 的 github[1] 站点并按照示例我注意到当查询结果是一个元素时它 returned 一个 JSON 对象但是当它 return 超过第一,它 return 是一个列表。

return 总是一个包含 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/

根据 JSON API 规范,此行为是由于 v1.0rc1 中的重大更改所致:

BREAKING CHANGE: Singular resource objects SHOULD now be be represented with JSON objects instead of arrays. This allows for symmetrical representations in request and response documents, as well as PUT/POST requests and PATCH operations. It also simplifies implementations which do not support batch operations (i.e. they can allow an object and not an array).

你可以看看here