python无法解析JSON数据
问题描述:
我无法使用python解析JSON数据。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?
答
简而言之,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的安全,您将需要重新编码json.dumps
答
当您使用python的json.loads(text)
它会返回一个python字典。当您打印该字典时,它不是json格式。
如果你想要一个json输出,你应该使用json.dumps(json_object)
。
您解码了JSON并打印了Python字典的文本表示,该字典不一定与原始JSON编码相同。 – chepner
事实上,你从第二个脚本得到任何输出是证明Python正在解析JSON就好了;你只是没有输出JSON到验证器。 – chepner
即使我不打印并直接使用数据。它工作正常。所以我相信,即使在内部它不正确加载。 –