我们有一个内部工具,该工具具有可以从中请求数据的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”,并添加双引号而不是单引号。
答案 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'}
]