在接下来的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)'