强制 miller 将数据作为字符串读取并转换为 JSON

强制 miller 将数据作为字符串读取并转换为 JSON

在接下来的MWE中

echo x="1e2" | mlr --ojson cat

我的目的是让 miller 生成一个包含该对象的单元素 JSON 数组

{"x": "1e2"}

实际返回的对象(在数组内)是

{"x": 1e2}

其中值被视为数字,我猜这是其解析的结果。我如何告诉 miller 生成 JSON 对象,其值是字符串而不是数字? (MWE 中“1e2”周围引号的基本原理正是为了强调这一意图。)

答案1

在 Miller 6 中你可以使用-S旗帜,这迫使 Miller 将数据视为字符串:

echo x="1e2" | mlr --ojson -S cat

要得到

[
{
  "x": "1e2"
}
]

或者你可以使用string函数来投射它

echo x="1e2" | mlr --ojson put '$x=string($x)'

相关内容