javascript - Forțează valoarea float atunci când folosești JSON.stringify


Vreau să forțez un Număr să fie un Float, după JSON.stringify(). Din păcate, JSON.stringify() șterge 1 .0.

Exemplu :

JSON.stringify(1.0) // "1"

Rezultatul dorit:

JSON.stringify(1.0) // "1.0"

Folosesc un API care vrea un obiect în format JSON, dar înțelege doar valorile zecimale. Așadar, am vrut să întreb dacă este posibil să folosesc JSON.stringify pentru a genera șirul cu valori zecimale fără a folosi magia Regex-.replace

Răspuns #1

Răspunsul direct și destul de scurt la întrebarea ta este nu, nu poți personaliza serializarea valorilor numerice cu JSON.stringify. Vezi JSON.stringify() pe MDN.

Dacă ai într-adevăr nevoie de zecimale pentru numerele tale întregi, trebuie să folosești „magia regex”, așa cum menționezi în întrebarea ta, sau să găsești o bibliotecă care să-ți permită să faci astfel de trucuri. Dacă nu te ocupi de obiecte excesiv de complexe sau de multe tipuri diferite de obiecte, probabil că le-ai putea transforma în șir manual.

Ca o notă laterală, sună foarte, foarte suspect cu un API care trebuie alimentat cu JSON formatat personalizat. Aș verifica de trei ori dacă există vreo altă modalitate de a-l folosi.

Răspunsul #2

Folosește toFixed în loc de stringify. Exemplu:

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

Mai multe despre toFixed - http://www.w3schools.com/jsref/jsref_tofixed.asp.

Ca să fie clar, vorbim despre conversia număr la șir de caractere, nu număr la float (un astfel de tip nu există în JavaScript), așa cum se poate înțelege din descrierea întrebării. toFixed va returna întotdeauna un șir de caractere cu numărul specificat de zecimale.