我正在构建一个相当大的JSON字典,其中我指定了几个UUID,如下所示:
import uuid
game['uuid'] = uuid.uuid1()
我在以下回溯中得到一个类型错误。我不确定问题是什么,因为我们可以在json对象中使用UUID
Traceback (most recent call last):
File "/Users/claycrosby/Desktop/coding/projects/gambling/scraper/sbtesting.py", line 182, in <module>
game_json = json.dumps(game)
File "/opt/miniconda3/envs/ds383/lib/python3.8/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/opt/miniconda3/envs/ds383/lib/python3.8/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/opt/miniconda3/envs/ds383/lib/python3.8/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "/opt/miniconda3/envs/ds383/lib/python3.8/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type UUID is not JSON serializable
[Finished in 0.5s with exit code 1]
[cmd: ['/opt/miniconda3/envs/ds383/bin/python3', '/Users/claycrosby/Desktop/coding/projects/gambling/scraper/sbtesting.py']]
[dir: /Users/claycrosby/Desktop/coding/projects/gambling/scraper]
[path: /opt/miniconda3/bin:/opt/miniconda3/condabin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Users/claycrosby/Desktop/coding/programs/pbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin]
那1买的答案很好。但是,如果最终不得不在太多地方对数据进行按摩以使其序列化,请考虑编写自己的JSON序列化类来为您做这件事!例如,这里有一个将IPV4地址转换为字符串的方法:
然后你这样称呼它:
将其强制转换为字符串,而不是使用
uuid.UUID
对象:uuid.UUID
类本身不能被JSON序列化,但对象可以用几种JSON兼容的格式表示。从help(uuid.UUID)
我们可以看到这些选项(尽管字节也不是json,所以需要做更多的工作)例如,如果您的API需要URN,您应该
相关问题 更多 >
编程相关推荐