JSON结果以意外方式引用

时间:2019-06-18 14:28:38

标签: python json

我正在编写一个Python脚本,该脚本从返回JSON的API中提取数据。当我在浏览器中访问API端点时,会得到正确引用的结果;例如

{ "architecture_name":"x86_64","operatingsystem_id":22,"operatingsystem_name":"RedHat 7.6" }

但是,当我通过Python脚本连接到API时,会得到不正确的引用结果:

{ u'architecture_name':u'x86_64',u'operatingsystem_id':u'22',u'operatingsystem_name':u'RedHat 7.6' }

我使用的函数只是通过URL调用API:

def get_json(location, username, password):
    # Performs a GET using the passed URL location
    r = requests.get(location, auth=(username, password), verify=False)
    return r.json()

我无法识别u'...'格式,也无法通过Google找到任何内容。我应该设置编码吗?

1 个答案:

答案 0 :(得分:1)

在此处进行r.json()时,它不会返回实际的JSON-而是返回一个python dict。您看到的u'字符串是 unicode字符串-只是碰巧具有与原始字符串不同的某种编码类型的字符串(顺便说一下,这在python3中不再是问题-所有字符串是unicode字符串)。

出于所有意图和目的,您可以将r视为dict,因为这就是事实。如果您想再次将其正式正式输出为有效的JSON(带有有效的引号字符和所有字符),则可以使用json模块将该字典转换为包含有效JSON格式的字符串:

import json
...
print(json.dumps(r))