如何从 Native Messaging 主机上的标准输入解析 JSON?

How to parse JSON from stdin at Native Messaging host?

使用 How do I use a shell-script as Chrome Native Messaging host application 处的代码作为模板,并给出包含

的文件 file.json
{"text":"abc"}

遵循 and the jq documentation

处的代码
$ cat file.json | jq --raw-output '.text'

产出

abc

我不确定如何在此处合并模式

while read -r id name date; do
    echo "Do whatever with ${id} ${name} ${date}"
done< <(api-producing-json | jq --raw-output '.newList[] | "\(.id) \(.name) \(.create.date)"')

进入前一个答案的模板,目的是使用 [=20 从循环中的 JSON 捕获单个 属性 "text" (abc) =] 能够将该文本传递给另一个系统调用,然后 printf 将消息传递给客户端。

我们正在努力实现的是

json=$(<bash program> <captured JSON property>)
message='{"message": "'$json'"}'

其中 {"text":"abc"} 从客户端(Chromium 应用程序)发送到本机消息主机。

如何在前Answer处的代码中使用jq获取JSON属性作为变量?

假设 file.json 包含指示的 JSON,我相信您只需要:

json=$(jq '{message: .}' file.json)

如果你然后 echo "$json",结果将是:

{
  "message": {
    "text": "abc"
  }
}