为什么 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)
根据 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
我不得不将 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)
根据 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