【问题标题】:Python3 - JSON errorPython3 - JSON 错误
【发布时间】:2015-10-16 14:02:39
【问题描述】:

我目前正在访问 OldSchool RuneScape 的 API,它以 JSON 格式返回字符串,但对我不起作用。

我当前的代码:

import json
import urllib.request

name = input('OSRS name? ')
url = 'http://services.runescape.com/m=hiscore_oldschool/index_lite.ws?player={0}'.format(name) 

open_url = urllib.request.urlopen(url)
read_url = open_url.read().decode()
format_to_string = str(read_url)

j = json.loads(format_to_string)
print(j)

但如果我尝试将其命名为 itz_craft,则会出现错误。

OSRS name? itz_craft
Traceback (most recent call last):
File "/home/pi/Programming/Python3/RuneScape/json_test.py", line 11, in <module>
j = json.loads(format_to_string)
File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.4/json/decoder.py", line 346, in decode
raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 7 - line 28 column 1 (char 6 - 315)

我希望有人能帮我解决这个问题,这样我以后就可以避免 JSON 出现问题,因为我会经常使用它。

还是谢谢!

【问题讨论】:

  • 您确定 API 正在返回 JSON 吗?我在浏览器中访问了 URL,页面是 text/html。有没有可以指定JSONformat 参数?

标签: json python-3.x


【解决方案1】:

Runescape HiScores API documentation 表示返回值为:

以换行符分隔的 CSV 字符串

所以你不能将它解析为 JSON,因为它不是。

【讨论】:

  • 我将如何使用 CSV 执行此操作?
  • Python 在标准库中有一个 CSV 解析器,请查看 official docsthis tutorial 中的 CSV 模块。如果您对 CSV 模块还有其他问题,您应该提出一个单独的问题。
  • 如果我帮助了您或为您指明了正确的方向,请考虑将此标记为已接受的答案。
猜你喜欢
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 2016-03-01
相关资源
最近更新 更多