【问题标题】:Flask/Keras: <p>Failed to decode JSON object: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)</p>Flask/Keras:<p>无法解码 JSON 对象:期望用双引号括起来的属性名称:第 1 行第 2 列(字符 1)</p>
【发布时间】:2020-05-26 15:34:22
【问题描述】:

我创建了一个简单的 Keras 模型并使用 Flask 将其实现到 API,不幸的是我收到了如下所示的错误:

C:\Users\callu\OneDrive\Documents\Keras>curl  -d "{"9","7","9","5","7","6","0","4","6","0","4","7","0","7"}" -H "Content-Type: application/json" -X POST http://localhost:5000
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>Failed to decode JSON object: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)</p>

我尝试用 " 或 ' 切换数据的排列,但没有运气(我不是 JSON 专家,所以一直在关注在线教程)

这里是 curl 命令:

curl  -d "{"9","7","9","5","7","6","0","4","6","0","4","7","0","7"}" -H "Content-Type: application/json" -X POST http://localhost:5000
pause

这里是 Python 代码:

from math import expm1

import joblib

import numpy as np

from flask import Flask, jsonify, request

from tensorflow import keras

from keras.models import load_model

from keras.models import model_from_json

import pandas as pd

app = Flask(__name__)

app.config["DEBUG"] = True


json_file = open('CatModel1.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
# load weights into new model
loaded_model.load_weights("CatModel1.h5")

print("Model Loaded")

@app.route("/", methods=["POST"])

def index():

    input = request.json

    prediction = loaded_model.predict(input)

    return jsonify({"Taste": str(df)})
app.run()

【问题讨论】:

    标签: python json curl flask keras


    【解决方案1】:

    您需要转义 JSON 中的双引号。

    例如。 "{ \"9\", \"7\", \"9\", \"5\", \"7\"}"

    它目前看到的是"{" 然后9 然后"," 然后7 然后"," 等等。

    您也可以尝试使用单引号作为外部引号,但 YMMV,这取决于您的环境如何工作。

    例如。 '{ "9", "7", "9", "5", "7"}'

    此外,由于这似乎是一个数字列表,它们可能根本不需要引号。

    例如。 '{9, 7, 9, 5, 7}'

    最后,因为它是一个列表,所以使用方括号而不是花括号。花括号用于键值对,例如{"name": "Bob"}

    [9, 7, 9, 5, 7]
    

    【讨论】:

    • 花括号也不是 json
    • 花括号是 json,但仅用于键:值对/对象,而不用于列表。我会修复答案。
    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2018-08-02
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多