这个Json的解析函数是什么?

问题描述:

"results": [ 
     { 
     "result_index": 0, 
     "results": [ 
      { 
       "final": true, 
       "alternatives": [ 
        { 
        "transcript": "THE TEXT ", 
        "confidence": 0.2958 
        } 
       ] 
      } 
     ] 
     } 
    ], 
    "status": "completed" 

我想成绩单在此JSON的价值,基本上我想:文本这个Json的解析函数是什么?

我想和没有工作的解析:

def parse(obj): 
    text=[] 
    if 'results' in obj: 
     results = obj['results'] 
     for result in results: 
      if 'results' in results: 
       results = results['results'] 
       if 'alternatives' in result: 
        alternatives = result['alternatives'] 
        assert len(alternatives) == 1 
        alternative = alternatives[0] 
        text.append(alternative['transcript']) 
    return ' '.join(text).lstrip().rstrip() 

什么会正确的解析函数的使用是

+1

*“没有工作”*是什么意思? –

为什么不使用json包?它会让你的生活更轻松,使用方法:

import json 

然后,从其上:

所有的
data2 = json.loads('''{"results": [ 
     { 
     "result_index": 0, 
     "results": [ 
      { 
       "final": true, 
       "alternatives": [ 
        { 
        "transcript": "THE TEXT ", 
        "confidence": 0.2958 
        } 
       ] 
      } 
     ] 
     } 
    ], 
    "status": "completed"}''') 

print(data2['results'][0]['results'][0]['alternatives'][0]['transcript']) 

首先,你的JSON甚至不是有效的,你必须把它们放在大括号。接下来,由于JSON.loads需要一个字符串,因此您必须将其包装在'''中。 另一种方法是将您的JSON声明为var,然后调用new_var = JSON.dumps(your_json_var),然后JSON.loads(new_var),然后调用与上面相同的打印功能。

+0

它没有工作。 TypeError:列表索引必须是整数,而不是str – Tim

+0

我已经编辑了我的答案 –

+0

oh okey,但这只给了我1个元素,如果我有100个元素(这就是为什么我使用ifs)。 – Tim