python无法解析JSON数据

时间:2017-05-05 13:05:00

标签: python json python-requests

我无法使用python解析JSON数据。

网页网址正在返回JSON数据

import requests
import json  

BASE_URL = "https://www.codechef.com/api/ratings/all"
data = {'page': page, 'sortBy':'global_rank', 'order':'asc', 'itemsPerPage':'40' }
r = requests.get(BASE_URL, data = data)
receivedData = (r.text)
print ((receivedData))

当我打印出来时,我收到大文字,当我使用https://jsonlint.com/验证时,它显示有效JSON

后来我用了

import requests
import json    

BASE_URL = "https://www.codechef.com/api/ratings/all"
data = {'page': page, 'sortBy':'global_rank', 'order':'asc', 'itemsPerPage':'40' }
r = requests.get(BASE_URL, data = data)
receivedData = (r.text)
print (json.loads(receivedData))

当我使用https://jsonlint.com/验证大型打印文本时,它显示 INVALID JSON

即使我不打印并直接使用数据。它运作正常。所以我确信即使在内部它也没有正确加载。

是否python无法正确解析文本到JSON?

2 个答案:

答案 0 :(得分:1)

简而言之,json.loads从Json(thing,objcet,array,whatever)转换为Python对象 - 在本例中为Json Dictionary。打印时,它将作为itterative打印,因此使用单引号打印..

有效地扩展您的代码:

some_dictionary = json.loads(a_string_which_is_a_json_object)
print(some_dictionary)

要确保您正在打印json-safe,您需要使用json.dumps重新编码

答案 1 :(得分:1)

当你使用python的json.loads(text)时,它返回一个python字典。当你打印出那个字典时,它不是json格式。

如果你想要一个json输出,你应该使用json.dumps(json_object)