2016-05-04 6 views
0

私のデータが大きな整数を持つ場所で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ビットバイナリでこれをテストしました。

すべての入力はすばらしいでしょう。

+1

これは、jqが内部的に64ビットの浮動小数点数を使用するためです。 –

+0

なぜjqはちょうど静かに長い整数を破壊するのですか?ユーザーに少なくとも警告してはいけませんか? idを文字列に格納せずにそのことを止める方法はありますか? –

+1

申し訳ありませんが、IDを文字列に格納することが最善の方法です。 jqはそれをサポートしているかサポートしていないからではなく、IDは一意性しか持たない不透明な識別子であると考えられるので、数値はより多くの意味を持ちます(加算、減算、...) –

答えて

0

あなたはpython jsonを使うことができます。 それは動作します、私はそれをテストしました。

+0

OPは、jqソリューションを求めています。 – darthsidious

関連する問題