用引号括住 JSON 中的字段

用引号括住 JSON 中的字段

我想将 json 中的一个字段从数字更改为字符串格式。

我从动态创建的文本文件创建 json 输出,如下所示:

LastUpdate=2019-12-01T13:26:46.388817319+01:00
State=NOT OK
TempA=26.299999
TempB=-0.100000
PumpState=0
Vault=100.000000
Mode=H+WW
ErrState=0

然后我使用jo将此输出转换为 json

cat /tmp/file | jo -p 
{
   "LastUpdate": "2019-12-01T13:26:46.388817319+01:00",
   "State": "NOT OK",
   "TempA": 26.299999,
   "TempB": -0.1,
   "PumpState": 0,
   "Vault": 100,
   "Mode": "H+WW",
   "ErrState": 0
}

问题是,我需要该值ErrState采用字符串格式。

看起来jo无法通过管道输入做到这一点。所以我想也许可以用sed或来实现jq?或者任何其他工具?

问题可能是,ErrState 的输出可以更改为文本,然后我在简单的搜索和替换中会有两次引号。

记住我想保留完整的输出 - 仅将 ErrState 更改为字符串。

答案1

jq可以使用:

.ErrState = (.ErrState | tostring)

相关内容