我的应用程序应接受来自JSON请求的数据,然后使用此数据进行一些计算。 我可以得到一个简单的字符串,但不能接受任何数组(这是非常重要的)。
@app.route('/calc', methods = ['POST'])
def add_entry():
print("p0")
request_json = request.get_json()
cond = request_json.get('condition')
f_arr = request_json.get('findings')
return json.dumps(cond, f_arr)
curl -X POST -H "Content-Type: application/json" -d "{ \"condition\": \"Fibroadenoma\", \"findings\": \"['Mass', 'Special cases']\" }" http://localhost:8080/calc
但它不会返回任何数组。 我该如何解析它? 提前谢谢!
答案 0 :(得分:0)
两个问题:
json.dumps json.dumps
需要一个项目进行编码,而不是参数项目列表。如果您需要同时返回它们,请将结果合并到一个新列表中并返回return json.dumps([cond, f_arr])
<强>引用强>
您正在传递一个字符串以查找结果。删除列表周围的引号,并将单引号更改为转义双引号
使用说明进行修改
让我们从你要传递给卷曲的数据参数开始
JoshJ:~ josh$ echo "{ \"condition\": \"Fibroadenoma\", \"findings\": \"['Mass', 'Special cases']\" }"
{ "condition": "Fibroadenoma", "findings": "['Mass', 'Special cases']" }
我在我的shell中使用echo
来显示非转义字符串的样子
现在让我们看一下解析为json时字符串的样子
JoshJ:~ josh$ echo "{ \"condition\": \"Fibroadenoma\", \"findings\": \"['Mass', 'Special cases']\" }" | jq
{
"condition": "Fibroadenoma",
"findings": "['Mass', 'Special cases']"
}
这说明了我提到的问题,即由于双引号,您的findings
列表实际上被解析为字符串。如果我是一个博彩人,我会说你的代码看到f_arr == "['Mass', 'Special cases']"
时你真正想要的是f_arr = [u"Mass", u"Special cases"]
。
您可以通过将您的卷曲数据(-d
值)更改为"{ \"condition\": \"Fibroadenoma\", \"findings\": [\"Mass\", \"Special cases\"] }"
来更正此问题。
您可以在下面的示例中看到它已正确解析
JoshJ:~ josh$ echo "{ \"condition\": \"Fibroadenoma\", \"findings\": [\"Mass\", \"Special cases\"] }" | jq
{
"condition": "Fibroadenoma",
"findings": [
"Mass",
"Special cases"
]
}