JSONのすべての数字を引用符で囲みます。

JSONのすべての数字を引用符で囲みます。

一部のJSONデータには数値が含まれています。すべての数値を文字列に変換するには? (引用符で囲む)

例:

{
        "id":1,
        "customer":"user",
        "plate":"BMT-216-A",
        "country":"GB",
        "amount":1000,
        "pndNumber":20000,
        "zoneNumber":4
}

しなければならない

{
        "id":"1",
        "customer":"user",
        "plate":"BMT-216-A",
        "country":"GB",
        "amount":"1000",
        "pndNumber":"20000",
        "zoneNumber":"4"
}

ベストアンサー1

$ jq 'map_values(tostring)' file.json
{
  "id": "1",
  "customer": "user",
  "plate": "BMT-216-A",
  "country": "GB",
  "amount": "1000",
  "pndNumber": "20000",
  "zoneNumber": "4"
}

新しいファイルにリダイレクトし、元のファイル名に移動します。

非フラット構造の数値を文字列により徹底的に変換するには、次の点を考慮してください。

jq '(..|select(type == "number")) |= tostring' file.json

その後、与えられた文書のすべての値を再帰的に確認し、番号を選択します。次に、選択した値を文字列に変換します。技術的にはキーもチェックしますが、JSONでは純粋な数字にすることはできないため、キーは選択されません。

例:

$ jq . file.json
{
  "a": {
    "b": 1
  },
  "b": null,
  "c": [
    1,
    2,
    "hello",
    4
  ]
}
$ jq '(..|select(type == "number")) |= tostring' file.json
{
  "a": {
    "b": "1"
  },
  "b": null,
  "c": [
    "1",
    "2",
    "hello",
    "4"
  ]
}

別途参照するには、次のようにnull変更してください。select()

select(type == "number" or type == "null")

おすすめ記事