<p>以下几行将为您提供一本词典:</p>
<pre><code>obj = jsonpickle.decode(result.content) # NOTE: `.content`, not `.json`
obj = result.json()
</code></pre>
<p>但以上这些都不能满足您的需要(python对象(不是dicitonary))。因为url中的json不是用<code>jsonpickle.encode</code>编码的,所以需要向生成的json添加额外的信息(比如<code>{"py/object": "__main__.Goal", ....}</code>)</p>
<hr/>
<pre><code>>>> import jsonpickle
>>> class Goal(object):
... def __init__(self):
... self.GoaldID = -1
... self.IsPenalty = False
...
>>> jsonpickle.encode(Goal())
'{"py/object": "__main__.Goal", "IsPenalty": false, "GoaldID": -1}'
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# JSON encoded with jsonpickle.encode (default unpicklable=True)
# => additional python class information attached
# => can be decoded back to Python object
>>> jsonpickle.decode(jsonpickle.encode(Goal()))
<__main__.Goal object at 0x10af0e510>
>>> jsonpickle.encode(Goal(), unpicklable=False)
'{"IsPenalty": false, "GoaldID": -1}'
# with unpicklable=False (similar output with json.dumps(..))
# => no python class information attached
# => cannot be decoded back to Python object, but a dict
>>> jsonpickle.decode(jsonpickle.encode(Goal(), unpicklable=False))
{'IsPenalty': False, 'GoaldID': -1}
</code></pre>
<hr/>
<p>如果您想要一个不是字典的实际Python对象,即您更喜欢<code>dic.Goals.[0].GoalGetterName</code>而不是<code>dic["Goals"][0]["GoalGetterName"]</code>,请使用<a href="https://docs.python.org/3/library/json.html#json.loads" rel="nofollow noreferrer">^{<cd5>}</a>和对象挂钩:</p>
<pre><code>import json
import types
import requests
url = "https://www.openligadb.de/api/getmatchdata/39738"
result = requests.get(url)
data = json.loads(result.content, object_hook=lambda d: types.SimpleNamespace(**d))
# OR data = result.json(object_hook=lambda d: types.SimpleNamespace(**d))
goal_getter = data.Goals[0].GoalGetterName
# You get `types.SimpleNamespace` objects in place of dictionaries
</code></pre>