首页 > 解决方案 > 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

标签: pythonjson

解决方案


推荐阅读