ミラーがデータを文字列として読み込み、JSONに変換するように強制する

ミラーがデータを文字列として読み込み、JSONに変換するように強制する

次のMWEでは

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

私の目標は、ミラーにオブジェクトを含む単一要素のJSON配列を作成させることです。

{"x": "1e2"}

(配列内で)返された実際のオブジェクトは次のとおりです。

{"x": 1e2}

ここで値は数値として扱われますが、これは解析の結果のようです。数値の代わりに文字列値を持つ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)'

関連情報