![强制 miller 将数据作为字符串读取并转换为 JSON](https://linux22.com/image/222984/%E5%BC%BA%E5%88%B6%20miller%20%E5%B0%86%E6%95%B0%E6%8D%AE%E4%BD%9C%E4%B8%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%AF%BB%E5%8F%96%E5%B9%B6%E8%BD%AC%E6%8D%A2%E4%B8%BA%20JSON.png)
在接下来的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)'