Google 聊天:收到无效的 JSON 负载。字符串中需要结束引号。\n\n^
Google chat: Invalid JSON payload received. Closing quote expected in string.\n\n^
我正在尝试使用 bash 脚本发送 google 聊天消息。当我定义一个局部变量或使用简单文本时,它起作用了。但是当我获取一个文件并使用该文件中定义的变量时,我得到了错误。
这个有效:
#!/bin/bash
MSG="Data"
curl -H 'Content-Type: application/json' -X POST "$CHAT_URL" --data @<(cat <<EOF
{
"cards": [
{
"sections": [
{
"widgets": [
{
"textParagraph": {
"text": "Msg: $MSG"
}
}]}]}]}
EOF
)
这不是:
#!/bin/bash
source file.txt # contents: MSG=Data
echo $MSG # variable defined in file.txt
curl -H 'Content-Type: application/json' -X POST "$CHAT_URL" --data @<(cat <<EOF
{
"cards": [
{
"sections": [
{
"widgets": [
{
"textParagraph": {
"text": "Msg: $MSG"
}
}]}]}]}
EOF
)
输出:
Data
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Closing quote expected in string.\n\n^",
"status": "INVALID_ARGUMENT"
}
}
这个问题基本上是重复的
和
Are multi-line strings allowed in JSON?
您的文件有 windows 行结尾 (\r\n
)。因此,从您的文件加载的字符串以 \r
结尾。 JSON 字符串不允许包含控制字符,因此出现错误消息。
要解决此问题,请使用 dos2unix file.txt
转换文件。
我正在尝试使用 bash 脚本发送 google 聊天消息。当我定义一个局部变量或使用简单文本时,它起作用了。但是当我获取一个文件并使用该文件中定义的变量时,我得到了错误。
这个有效:
#!/bin/bash
MSG="Data"
curl -H 'Content-Type: application/json' -X POST "$CHAT_URL" --data @<(cat <<EOF
{
"cards": [
{
"sections": [
{
"widgets": [
{
"textParagraph": {
"text": "Msg: $MSG"
}
}]}]}]}
EOF
)
这不是:
#!/bin/bash
source file.txt # contents: MSG=Data
echo $MSG # variable defined in file.txt
curl -H 'Content-Type: application/json' -X POST "$CHAT_URL" --data @<(cat <<EOF
{
"cards": [
{
"sections": [
{
"widgets": [
{
"textParagraph": {
"text": "Msg: $MSG"
}
}]}]}]}
EOF
)
输出:
Data
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Closing quote expected in string.\n\n^",
"status": "INVALID_ARGUMENT"
}
}
这个问题基本上是重复的
您的文件有 windows 行结尾 (\r\n
)。因此,从您的文件加载的字符串以 \r
结尾。 JSON 字符串不允许包含控制字符,因此出现错误消息。
要解决此问题,请使用 dos2unix file.txt
转换文件。