我需要将json字符串转换为python对象。我所说的“新”python3对象是指:
class MyClass(object):
我发现了一些关于jsonpickle文档的帮助。但我发现的只是一些教程,这些教程首先将对象转换为json,然后再反向转换。
我想从Rest-API转换一个json字符串。
以下是我目前所做的:
import requests
import jsonpickle
class Goal(object):
def __init__(self):
self.GoaldID = -1
self.IsPenalty = False
class Match(object):
def __init__(self):
self.Goals = []
headers = {
"Content-Type": "application/json; charset=utf-8"
}
url = "https://www.openligadb.de/api/getmatchdata/39738"
result = requests.get(url=url, headers=headers)
obj = jsonpickle.decode(result.json)
print (obj)
这将导致:
TypeError: the JSON object must be str, bytes or bytearray, not 'method'
很明显,jsonpickle无法将其转换为我的类(Goal,Match),因为我不告诉jsonpickle应该在哪个类中转换输出。问题是我不知道如何告诉jsonpickle从类型匹配转换对象中的JSON?我怎么知道目标列表应该是List<Goal>
类型?
你是说这样的事吗?
打印内容:
对于最新的python版本,一种干净的方法可能是使用marshmallow-dataclass:
以下几行将为您提供一本词典:
但以上这些都不能满足您的需要(python对象(不是dicitonary))。因为url中的json不是用
jsonpickle.encode
编码的,所以需要向生成的json添加额外的信息(比如{"py/object": "__main__.Goal", ....}
)如果您想要一个不是字典的实际Python对象,即您更喜欢} 和对象挂钩:
dic.Goals.[0].GoalGetterName
而不是dic["Goals"][0]["GoalGetterName"]
,请使用^{相关问题 更多 >
编程相关推荐