Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 请求模块返回json,其中项未排序_Python_Python Requests - Fatal编程技术网

Python 请求模块返回json,其中项未排序

Python 请求模块返回json,其中项未排序,python,python-requests,Python,Python Requests,当我以这种方式使用python的请求模块时: response=requests.get('http://[some\u api\u url]”) print response.json() 与通过浏览器查看json相反,我得到了不同的json顺序 例如: 通过response.json()我得到: [{“key2”:“value2”},{“key1:“value1”}] 而通过浏览器,我认为它应该是: [{“key1:value1”},{“key2”:“value2”}] 编辑:打印响应时。

当我以这种方式使用python的
请求
模块时:

response=requests.get('http://[some\u api\u url]”)
print response.json()
与通过浏览器查看json相反,我得到了不同的json顺序

例如:
通过response.json()我得到:
[{“key2”:“value2”},{“key1:“value1”}]

而通过浏览器,我认为它应该是:
[{“key1:value1”},{“key2”:“value2”}]

编辑:打印
响应时。文本的顺序正确

但不是json

您可以使用json模块的
object\u pairs\u hook
参数,如下所示:

object_pairs_hook是一个可选函数,它将通过对有序的对象列表进行解码的任何对象文本的结果来调用。将使用object_pairs_hook的返回值而不是dict。此功能可用于实现依赖于键和值对解码顺序的自定义解码器(例如,collections.orderedict()将记住插入顺序)。如果还定义了object_hook,则object_pairs_hook具有优先级

为了更简单,您可以在中看到KWARG是从json方法传递到json模块的,因此也可以这样做:

d = response.json(object_pairs_hook=OrderedDict)

d
将是一个
OrderedDict
,其顺序为
响应。保留文本

你能发布这个url吗?不幸的是,它不是公开的url。我通常使用:
json.loads(response.text parse\u float=float,object\u pairs\u hook=orderedict)
和来自
集合的orderedict
@stellasia:谢谢,我自己找到了这个解决方案,但是有办法使用requests.json()吗以有序的方式?在CPython 3.6 a中,这种行为没有得到语言的保证。从Python3.7开始,现在已经保证了这一点。这应该可以避免显式使用
orderedict
。我用
d=response.json(object\u pairs\u hook=orderedict)
验证了第二种方法,效果非常好。请将object\u parir\u hook更改为object\u pairs\u hookWow这非常有用。不知道没有这个我怎么过了这么久。谢谢你,先生!
d = response.json(object_pairs_hook=OrderedDict)