无法从REST API调用解析JSON

时间:2018-11-05 14:23:41

标签: python json

我无法从API调用解析此JSON响应,我想提取标牌值(KA40M9202)。

api_response = api_instance.recognize_bytes(params,...,...,...,...)

pprint (api_response)

以下为打印内容

{'results': [{'candidates': [{'confidence': 70.61698913574219,
                                  'matches_template': 0,
                                  'plate': 'KA40M9202'},
                                 {'confidence': 65.3728256225586,
                                  'matches_template': 0,
                                  'plate': 'KA30M9202'},
                                 {'confidence': 65.3718490600586,
                                  'matches_template': 0,
                                  'plate': 'KA10M9202'}],
                  'matches_template': 0,
                  'plate': 'KA40M9202',
                  'processing_time_ms': 39.60576629638672,
                  }

调用json.loads()时显示错误

jsonstr = json.loads(api_response)

错误信息

obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer

3 个答案:

答案 0 :(得分:5)

recognize_开头的OpenALPR bindings for Python全部返回

  

以响应字典的形式进行OpenALPR分析

已经存在,因此无需解码JSON。

编辑::文档字符串看起来有点不真实,它返回了一个InlineResponse200对象,但是它的.results属性将为您提供结果列表。

答案 1 :(得分:1)

通过阅读@ L3viathan指向的文档,我了解到API响应是一个嵌套列表。

i =0  
if(len(api_response.results)!=0) :
    for i in api_response.results[0].candidates :
        print i.plate

上面的代码将获取必填字段。

答案 2 :(得分:0)

pprint调用的输出为我们提供了有关此处发生情况的提示。在字符串上调用pprint时(应该是JSON响应)。它会像这样返回:

('{"results": [{"candidates": [{"confidence": 70.61698913574219, '
 '"matches_template": 0, "plate": "KA40M9202"}, {"confidence": '
 '65.3728256225586, "matches_template": 0, "plate": "KA30M9202"}, '
 '{"confidence": 65.3718490600586, "matches_template": 0, "plate": '
 '"KA10M9202"}], "matches_template": 0, "plate": "KA40M9202", '
 '"processing_time_ms": 39.60576629638672}]}')

也就是说,作为元组包含用单引号'包裹的字符串,这提示我们从我们的API调用返回的内容实际上不是JSON字符串而是python数据结构