Jav*_*aSa 8 python python-requests
当我以requests这种方式使用python的模块时:
response = requests.get('http://[some_api_url]')
print response.json()
与通过浏览器查看json相反,我获得了不同的json订购.
例如:
通过response.json()我得到:
[{"key2":"value2"},{"key1:"value1"}]
而通过浏览器,我认为它应该是:
[{"key1:"value1"},{"key2":"value2"}]
编辑:response.text以正确的顺序打印它但不是json
ste*_*sia 19
您可以object_pairs_hook按照doc中的建议使用json模块的参数:
object_pairs_hook是一个可选函数,将使用有序的对列表对解码的任何对象文字的结果进行调用.将使用object_pairs_hook的返回值而不是dict.此功能可用于实现依赖于键和值对被解码的顺序的自定义解码器(例如,collections.OrderedDict()将记住插入的顺序).如果还定义了object_hook,则object_pairs_hook优先.
import json
from collections import OrderedDict
result = json.loads(request.text,
object_pairs_hook=OrderedDict)
Run Code Online (Sandbox Code Playgroud)
为了更简单,您可以在请求的实现中看到kwargs从json方法传递到json模块,因此这也适用:
d = response.json(object_pairs_hook=OrderedDict)
Run Code Online (Sandbox Code Playgroud)
并且d将是保留OrderedDict的顺序response.text.