google-cloud-platform - 收到无效的 JSON 有效负载。'payload' 处的未知名称 \"row\":在 google automl api 上找不到字段
问题描述
我正在尝试实现 google automl api https://cloud.google.com/automl-tables/docs/predict
api docs说我需要以下列格式发布数据
{
"payload": {
"row": {
"values": [value1, value2,...]
}
}
}
但是,当我以相同格式发布数据时,出现以下错误。
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name \"row\" at 'payload': Cannot find field.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "payload",
"description": "Invalid JSON payload received. Unknown name \"row\" at 'payload': Cannot find field."
}
]
}
]
}
}
这是我的卷曲请求
curl --location --request POST 'https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/TBLID:predict' \
--header 'Content-Type: application/json; charset=utf-8;' \
--header 'Accept-Charset: utf-8' \
--header 'Authorization: Bearer token here' \
--data-raw '{
"payload": {
"row": {
"values": [
"",
"4.900000",
""
]
}
}
}'
我不确定是什么导致了这个错误。谁能帮忙解决这个问题谢谢
解决方案
我有一个带有 AutoML 表的项目,这是一个发送的示例预测请求,它工作正常并且返回结果没有错误:
{
"payload": {
"row": {
"values": [
"2",
"test text",
"test text",
"21",
"0",
"0",
"test text",
"10",
"",
"S"
]
}
}
}
如果您不确定如何提交数据或遇到错误,请转到控制台中的项目和 AutoML Tables 模型,然后单击“测试和使用”。然后,按照这些说明从控制台获取在线预测。注意 JSON 代码视图,它将为您提供准确的输入,并让您也可以测试您的 JSON 输入。
为了测试,我提交了以下 curl 请求(更改了一些识别字符)
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://automl.googleapis.com/v1beta1/projects/this-isnt-a-real-project-id/locations/us-central1/models/TBL123451234512345:predict
我发送请求的同一目录中的 request.json 文件是:
{
"payload": {
"row": {
"values": [
"yes",
"-1",
"primary",
"jul",
"51",
"0",
"yes",
"no",
"88",
"cellular",
"blue-collar",
"unknown",
"10",
"620",
"married"
]
}
}
}
回应是:
{
"payload": [
{
"tables": {
"score": 0.9999906,
"value": "no"
}
},
{
"tables": {
"score": 9.42341e-06,
"value": "yes"
}
}
]
}
我还在下面成功地在邮递员中重复了同样的请求:
curl --location --request POST 'https://automl.googleapis.com/v1beta1/projects/this-isnt-a-real-project-id/locations/us-central1/models/TBL123451234512345:predict' \
--header 'Accept-Charset: utf-8' \
--header 'Authorization: Bearer abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd' \
--header 'Content-Type: application/json' \
--data-raw '{
"payload": {
"row": {
"values": [
"yes",
"-1",
"primary",
"jul",
"51",
"0",
"yes",
"no",
"88",
"cellular",
"blue-collar",
"unknown",
"10",
"620",
"married"
]
}
}
}'
推荐阅读
- class - Dart 返回多个坐标
- ios - React-native iOS:Cocoapods 找不到 pod “Firebase/CoreOnly”、“Google-Maps-iOS-Utils”和“GoogleMaps”的兼容版本
- delphi - 生成 Delphi XML 文档
- javascript - 控制台问题(ERR_UNKNOWN_URL_SCHEME)
- android - 设置房间数据库时使用 @Embedded 标签时出错
- git - kex_exchange_identification:读取:操作超时
- regex - 用于重建 html 标签的正则表达式
- pandas - 删除具有特定列值的行下方的熊猫数据框中的所有行
- c++ - 一种发布 C++ 项目可执行文件的简洁方法
- windows - Windows:没有 ComponentId 的界面?