Python字典到json.dumps烧瓶不工作无法发送响应

时间:2017-02-21 22:37:29

标签: json python-2.7 dictionary post flask

我正在为tensorflow应用程序构建后端,基本上在我进行分类之后,我想以JSON格式将结果返回给客户端。

因此,在我的分类后,我得到两个值"name""%"

进口

import json
from flask import Flask, jsonify, request, Response #import objects from the Flask model
app = Flask(__name__) #define app using Flask
调用的

函数

基本上,这会在变量Items

中返回此字典

{'moulin de la galette renoir': 0.0080302889, 'les demoiselles d avignon picassso': 0.7823543, 'starry night over the rhone van gogh': 0.01457829, 'wheatfields with crows van gogh': 0.049212866, 'guernica picassso': 0.14582427}

 classify()
     do some code here ...

     # Sort to show labels of first prediction in order of confidence
     top_k = predictions[0].argsort()[-len(predictions[0]):][::-1]

     #items within object
            items = {}
            for node_id in top_k:
                human_string = label_lines[node_id]
                score = predictions[0][node_id]
                #stores human string and score in item
                items[human_string] = score
     return items

API

@app.route('/inception', methods=['POST'])
def inception():
    if 'file' not in request.files:
        return jsonify({'message' : 'failed'})
    file = request.files['file']
    output = classify(file)
    #print just to see the format of the output
    print(output)
    return Response(json.dumps(output),  mimetype='application/json')

这应该以json形式回发项目,但事实并非如此。

如果来自classify(),我硬编码与输出相同的完全相同的值。

所以:

return {'moulin de la galette renoir': 0.0080302889, 'les demoiselles d avignon picassso': 0.7823543, 'starry night over the rhone van gogh': 0.01457829, 'wheatfields with crows van gogh': 0.049212866, 'guernica picassso': 0.14582427}

1 个答案:

答案 0 :(得分:1)

弄清楚,基本上在张量流代码中,我没有包括我的得分值是一个numpy float 32类型。 Json转储无法转换这个以及它无法正常工作的原因。

score = float(predictions[0][node_id])

代码中的这一小改动解决了这个问题。总是确保您了解数据类型的经验教训。谢谢你们的帮助^^