私のデータが大きな整数を持つ場所でjqを使用しようとしています。例:jqは大規模な整数を丸めないでください。
$ cat door.json
[
{
"name": "Sliding Door 2",
"type": "MyAirtightSlideDoor",
"id": 130597706006447927,
"properties": {
"OnOff": "True",
"ShowInTerminal": "True",
"ShowInToolbarConfig": "True",
"ShowOnHUD": "False",
"Open": "True"
}
}
]
これは有効なjsonファイルです。しかし、その後、私はそれを解析するJQを要求したとき、それはIDの整数を破壊する:
$ cat door.json | jq '.'
[
{
"name": "Sliding Door 2",
"type": "MyAirtightSlideDoor",
"id": 130597706006447920,
"properties": {
"OnOff": "True",
"ShowInTerminal": "True",
"ShowInToolbarConfig": "True",
"ShowOnHUD": "False",
"Open": "True"
}
}
]
私の最終目標は、IDを取得し、APIに深く照会し、それを使用できるようにすることですが、130597706006447920 = 130597706006447927!。
これは、centos 7 x86_64 AWSインスタンスのバージョン1.5、1.4、および1.3の64ビットバイナリでこれをテストしました。
すべての入力はすばらしいでしょう。
これは、jqが内部的に64ビットの浮動小数点数を使用するためです。 –
なぜjqはちょうど静かに長い整数を破壊するのですか?ユーザーに少なくとも警告してはいけませんか? idを文字列に格納せずにそのことを止める方法はありますか? –
申し訳ありませんが、IDを文字列に格納することが最善の方法です。 jqはそれをサポートしているかサポートしていないからではなく、IDは一意性しか持たない不透明な識別子であると考えられるので、数値はより多くの意味を持ちます(加算、減算、...) –