python - Python Vamp 插件 JSON 编码器
问题描述
我在 Python 中使用VAMP 插件:
import vamp
import librosa
data, rate = librosa.load("example.mp3")
chroma = vamp.collect(data, rate, "nnls-chroma:nnls-chroma")
我必须在 json 对象中解码结果。由于 Vamp 插件使用特定的对象vampy.RealTime
对象来包装数字,因此我为此编写了一个Encoder
,否则您将得到一个TypeError: (integer) is not JSON serializing
- 请参阅此处以了解此特定错误:“TypeError: (Integer) is not JSON serializable”当在 Python 中序列化 JSON 时?
出于这个原因,我编写了一个自定义 JSON 编码器,它使用从vampy.RealTime
对象转换为数字,取自这里
import json
class VampJSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, vamp.vampyhost.RealTime):
r = vamp.vampyhost.RealTime('seconds', obj)
return r
return super(VampJSONEncoder, self).default(obj)
但是当我像这样运行它时
json.dumps(chroma, sort_keys=True, indent=4, cls=VampJSONEncoder)
我得到一个
RuntimeError: maximum recursion depth exceeded while calling a Python object
解决方案
推荐阅读
- python-3.x - python3.8 google 搜索结果在 urllib.error.HTTPError: HTTP Error 429: Too Many Requests
- c# - 如何在 appsettings.json 中为 .Net 5.0 应用程序配置 SourceSwitch?
- apache-kafka - 使用 Kafka 在 MassTransit 中发布与生产
- html - 删除图像右侧的空白
- linux - linux中运行Electron的最小gui系统是什么
- karate - 我们可以在 UI 自动化的输入字段中提供空值或空字符串吗?
- javascript - Typescript - 从包含符号的文本中提取字符串
- mysql - MYSQL SUM 和 UPDATE 表之间
- sql - 迭代地改变红移(pgsql)中的条件变量
- azure-devops-server - 在 Azure Devops Server 中创建 bug 时自动创建任务