これは私がやっているものの例である:JSON.stringify出力に倍数としてフォーマットされた整数を挿入できますか?
var serialized = JSON.stringify({x: 1.0});
そして、これは私が望む結果である:
{"x": 1.0}
しかし、これは私が取得していた結果である:
{"x": 1}
私はJSON.stringify
の第2引数を使ってみました:
JSON.stringify({x: 1.0}, function (k, v) {
if (Number.isInteger(v)) {
return v.toFixed(1);
}
return v;
});
しかし、それは私はどちらか欲しいものを私に取得していません:
JSON.stringify
ため
the documentationを見ると
{"x": "1.0"}
、私はこれは私がやりたいことを得るために明白な方法が表示されません。回避策や欠けているものはありますか?
コンテキストの場合、シリアル化されたデータを取得してelasticsearchクラスターに渡しますが、elasticsearchにx
フィールド(この例では)のマッピングを動的に作成します。しかし、elasticsearchが最初に見た数値が1
で、1.0
でない場合は、ダブルマッピングの代わりに長いマッピングが作成され、x
のdouble値(たとえば、1.5
)であれば、elasticsearch解析が失敗します。
短い答え。 '1'を' 1.0'にすることはできず、それを数値として保持することはできません。 '1.0'は' 1'です - 文字列でない限り、常に最小の数字に変換されます。それが弾性検索を設定する最初のインスタンスであれば、ダミーオブジェクトを 'x:1.1'でプッシュすると、すべてのプロパティ名がどのようなものになるかを事前に知っていれば – tymeJV
@ tymeJVを取得します(例えば' x '、' y'、 'z'など)、正しいタイプのマッピングを作成することはできますが、ドキュメントはログメッセージなので、作成しません。 私自身の 'stringify'関数を書いても、私が望むものを得ることはできましたが、' JSON.stringify'を使って私が望むものを得る方法があるのだろうかと思います私自身を転がす必要があります。 –
これはビュー固有の要件であるようですので、AngularJSのAngular 2/Filtersに相当するものを使用することを検討してください。 –