2016-12-30 12 views
2

をJSON.stringify()の後にFloatに強制したいです。残念ながら、JSON.stringify()は1 .0を削除します。JSON.stringifyを使用する場合の浮動小数値

例:

JSON.stringify(1.0) // "1" 

募集結果:

JSON.stringify(1.0) // "1.0" 

私はJSON形式でオブジェクトを望んでいるAPIを使用していますが、それだけで小数の値を理解しています。だから、JSON.stringifyを使って、Regex-.replace-magicを使わずに10進値の文字列を生成することが可能かどうか質問したかった。

+2

「JSON.stringify(1)」に「1」を出力したいと思っていますか? JavaScriptには "float"というものはなく、['Number'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)のみです。 ['stringify'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)には関数をとるオーバーロードがあります。それを使って何を出力するかを決めます。 –

+0

@MikeMcCaughanいいえJSON.stringify(1)も "1.0"を出力する必要があります。はい、私はこのオーバーロード機能を見てきました。問題は; JSON.stringify({Test:1}、function(key、value){if(key == 'Test'){戻り値.toFixed(1)}戻り値;}); // "{" Test ":" 1.0 "}" ' ** "** ** **" *** –

答えて

1

あなたの質問に対する答えは、で、であるため、JSON.stringifyで数値のシリアル化をカスタマイズすることはできません。 JSON.stringify() on MDNを参照してください。

本当に整数の小数点が必要な場合は、あなたの質問に言及しているように "regex-magic"を使うか、そのようなトリックを実行できるライブラリを見つける必要があります。あなたが過度に複雑なオブジェクトやさまざまな種類のオブジェクトを扱っていないのであれば、それらを手動でストリングすることができます。

サイドノートとして、カスタムフォーマットのJSONを提供する必要があるAPIについては非常に疑念が湧いています。私はそれを使用する他の方法がある場合trippleチェックします。

+0

あなたの答えをありがとう。さて、私は何かを考え出すでしょう。残念ながら、これは私のコードの清潔さに影響します:(まあそれは本当です、私は二重の値を使用する必要があります、私はそれをチェックした。私はAPIを直接使用していないが、同等のもの。これらのコマンドはMinecraftによってよく解析されません。もしこの問題についてもっと知りたいのであれば、私はそうでなければ、いい日があります:) –

1

1と1.0はJavascriptで同じです。あなただけの末尾のゼロ以上のものを持っているフロートを文字列化した場合、それは正しくその値を保持します:

JSON.stringify(1.5) // "1.5" 
+0

私は知っていますが、 "1.0"を使用しても強制したい –

3

使用ではなく、文字列化の toFixed。例: - http://www.w3schools.com/jsref/jsref_tofixed.aspについて

var num = 1; 
var numStr = num.toFixed(1); //result is "1.0" 

詳細はをtoFixed。

明らかに私たちは変換の話をしています数字を文字列に変換する数字が浮動小数点型でない(このタイプはJavaScriptにはありません)のように質問の説明から理解できます。 toFixedは常に指定された小数点以下の桁数でStringを返します。

+0

MDNを参考に使用することをお勧めします( ['.toFixed()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed))。 –

+1

は 'JSON.stringify(1.toFixed(1))// '" 1.0 "''になります。私が探しているものではありません。引用符を付ける必要はありません –

+0

@LivioBrunner wayもう一度文字列を文字列化していますか?toFixedはstringを与えるため、stringify内で再度使用する必要はありません。 –

関連する問題