如何将API响应转换为JSON对象?

时间:2019-08-29 08:10:39

标签: python json api

我们有一个内部工具,该工具具有可以从中请求数据的API。如何将该响应转换为有效的JSON。我用过head = {'Content-Type': 'application/json'} and while running requests.get

dc_r = "https://www.ips.com/api/v1/test"

dc = requests.get(dc_r,cookies=cookie,verify=False, headers=head)

json_dc = json.load(dc)

print json_dc

输出具有以下格式:

{u'lastModifiedUser': {u'id': 1076, u'name': u'at@ips.com'}, u'organization': {u'id': 12707942, u'name': u'test.com'}, u'name': u'test-bk', u'createTime': 1563474336, u'failOpen': True}

如何从该响应中删除出现在每个键/值对之前的所有“ u”,并添加双引号而不是单引号。

2 个答案:

答案 0 :(得分:2)

json.load(dc)返回的值是一个字典,这就是使用u前缀(表示字典中的字符串是使用unicode字符集的字符串)和单引号的原因。

如果您要打印字符串,则可以使用json.dumps(json_dc)获取字符串表示形式。

否则,您可以使用json.dump(dictionary, opened_file)保存JSON文件。 opened_file必须是使用.write()方法的对象。

答案 1 :(得分:0)

一种解决方案是遍历API响应:

for i, item in enumerate(data):
    data[i] = json.loads(item)

并将其变成字典甚至是列表

data = [json.loads(d) for d in data]

因此您可以遍历有效载荷并将其转化为您期望的回报

[ 
  {'key': 'C#', 'value': '27779'},
  {'key': 'C++', 'value': '28415'},
  {'key': 'CSS', 'value': '6475'},
  {'key': 'HTML', 'value': '34293'},
  {'key': 'Java', 'value': '117831'},
  {'key': 'JavaScript', 'value': '205287'},
  {'key': 'Objective-C', 'value': '118096'}
 ]