如何从DetailedResponse对象获取“成绩单”数据?

时间:2019-07-11 18:44:10

标签: json python-3.x ibm-cloud

我使用IBM语音转文本服务从音频文件中获取文本。

这就是数据的样子

    {
    "result": {
        "results": [
            {
                "alternatives": [
                    {
                        "confidence": 0.6,
                        "transcript": "state radio "
                    }
                ],
                "final": true
            },
            {
                "alternatives": [
                    {
                        "confidence": 0.77,
                        "transcript": "tomorrow I'm headed to mine nine 
    consecutive big con I'm finna old tomorrow I've got may meet and greet 
    with whoever's dumb enough to line up for that and then on Friday you can 
    catch me on a twitch panel"
                    }
                ],
                "final": true

我尝试使用

将其转换为JSON
    print(json.dumps(output, indent = 4))

但是它给出了错误

    TypeError: Object of type DetailedResponse is not JSON serializable

如何使用此数据仅打印“成绩单”?

1 个答案:

答案 0 :(得分:1)

json.dumps()将Python对象转换为JSON字符串,这是由API示例完成的,用于记录/打印响应,但是在Python 3.7的怪癖中,使Python对象json可序列化的原因改变了。

如果看一下TypeError,output是类型DetailedResponse的实例。因此,您需要修改代码以使用适当的对象封装

print(json.dumps(output.get_result(), indent = 4))

或因为它不是受保护的属性。

print(json.dumps(output.result, indent = 4))

幸运的是,output.result是json可序列化的。