これは、jtc
UNIXユーティリティに基づく簡単な解決策です。
bash $ jtc -w'<.*>D:' -eu echo '"{}"' \; file.json
{
"amount": "1000",
"country": "GB",
"customer": "user",
"id": "1",
"plate": "BMT-216-A",
"pndNumber": "20000",
"zoneNumber": "4"
}
bash $
変更をjsonファイルに直接適用する場合は、次のように-f
スイッチを使用します。
bash $ jtc -f -w'<.*>D:' -eu echo '"{}"' \; file.json
提案されたソリューションは、任意の構造化jsonで正しく動作します。例:
bash $ jtc -w'<.*>D:' -eu echo '"{}"' \; file.json
{
"amount": "1000",
"country": "GB",
"customer": "user",
"id": "1",
"plate": "BMT-216-A",
"pndNumber": "20000",
"sub": {
"subvalue": "123"
},
"zoneNumber": "4"
}
bash $
- null値を引用したい場合は、ウォークパスを投げるだけです
-w'<>n:'
- ブール値を引用したい場合は、ウォークパスをスローします
-w'<any>b:'
また、逆のタスク(すべての数値の引用符を外す)は、同様の方法で簡単に実行できますfile.json
。
bash $ jtc -w'<^\d+$>R:' -eu echo {-} \; file.json
{
"amount": 1000,
"country": "GB",
"customer": "user",
"id": 1,
"plate": "BMT-216-A",
"pndNumber": 20000,
"zoneNumber": 4
}
bash $
更新:jtc
実装の最新バージョンがテンプレートと名前空間になりました。その場合、外部シェルの呼び出しは必要ありません。
bash $ jtc -w'<.*>D:' -u'<.*>D:<val>v' -T'"{val}"' file.json
{
"amount": "1000",
"country": "GB",
"customer": "user",
"id": "1",
"plate": "BMT-216-A",
"pndNumber": "20000",
"zoneNumber": "4"
}
jtc
ユーザーガイド:https : //github.com/ldn-softdev/jtc/blob/master/User%20Guide.md
{"a":{"b":1},"b":null}
に{ "a": "{\"b\":1}", "b": "null" }