从JSON读取和写入浮点值,以.0结尾

时间:2017-03-24 09:22:50

标签: javascript json node.js

我有这个JSON文件:

{
  "weight": 12.0,
  "values": [
    23.4,
    16.5,
    16.8,
    5.0,
    0.0,
    0.0,
    0.0
  ]
}

如果我尝试读取此文件然后将其写回(使用JSON.parseJSON.stringify

const fs = require('fs')

const json = JSON.parse(fs.readFileSync('test.json'))
console.log(json)
fs.writeFile('test2.json', JSON.stringify(json), (error) => {
  if (error) console.log(error) 
})

输出文件如下所示:

{
  "weight": 12,
  "values": [
    23.4,
    16.5,
    16.8,
    5,
    0,
    0,
    0
  ]
}

问题是浮动值是否以.0结尾 但我需要将这些值保留在原始值中。

我可以以某种方式读取浮点值,就像字符串一样,然后将其写为浮点值
(即使它以.0结尾)?

P.S。 Node.js v7.7.4

1 个答案:

答案 0 :(得分:2)

对于它们中的每一个,您可以使用模数运算符(%)来确定它是否为整数,如果是,则将其转换为字符串并将".0"附加到结尾它:

json.values.map(v => {
  return v % 1 === 0 ? v + ".0" : v
})



var json = {
  "weight": 12.0,
  "values": [
    23.4,
    16.5,
    16.8,
    5.0,
    0.0,
    0.0,
    0.0
  ]
}

var result = json.values.map(v => {
 return v % 1 === 0 ? v + ".0" : v
})

console.log(result);