如何将 JSON 字符串更改为长整型/双精度型/数字型



我有一个这样的JSON:

{ "id_document" : "12345679", "姓名" : "约翰·斯米斯", "值" : "127,30" }

我想将"值"字段更改为双精度/数字,如下所示:

{ "id_document" : "12345679", "姓名" : "约翰·斯米斯", "值" : 127.30 }

问题是我有很多 JSON 数据,例如 70k 行。所以我需要一种方法来自动化它。 有人有任何想法吗?

可以用任何语言进行决议。我正在尝试NodeJS。

谢谢你们的帮助。

编辑:

我的 JSON 文件如下所示:

{"DESPESA": [{"sgPartido": "DEM", "numMes": 1, "txtCNPJCPF": "03625917000170", "vlrGlosa": "0", "txNomeParlamentar": "ABEL MESQUITA JR." , "SGUF": "RR", "NUCarteiraParlamentar": 1, "vlrDocumento": "4007,06", "nuDeputadoId": 3074, "numSubCota": 3, "txtDescricaoEspecificacao": "Veículos Automotores", "txtPassageiro": null, "datEmissao": null, "codLegislatura": 55, "vlrRestituicao": "0", "numParcela": 0, "txtDescricao": "COMBUSTÍVEIS E LUBRIFICANTES.", "txtNumero": "4339", "numEspecificacaoSubCota": 1, "txtFornecedor": "B.B. PETROLEO LTDA", "numLote": 1354058, "indTipoDocumento": 0, "idecadastro": 178957, "numAno": 2017, "txtTrecho": null, "numRessarcimento": 5711, "vlrLiquido": "4007,06", "ideDocumento": 6196889, "nuLegislatura": 2015}, ...70k 行,带有这样的对象和结尾}

编辑:我做了伙计们,结果是:

fs = require('fs');
var in_file = 'in.json';
var out_file = 'out.json' 
fs.readFile(in_file, 'utf8', function(err, data) {
data = JSON.parse(data);
for(let i in data.DESPESA) {
let despesa = data.DESPESA[i];
let valor = despesa.vlrDocumento.replace(',', '.');
data.DESPESA[i].vlrDocumento = parseFloat(valor);
}
fs.writeFile(out_file, JSON.stringify(data), function(err) {
if (err) throw err;
console.log('The file has been saved!');
});
});

感谢您的帮助,答案有所作为。

假设你的数据是一个对象数组,你应该看看Array.proptoy.map,然后你可以编写一个函数来解析你的 对象,并将数据从字符串转换为数字,例如:

const myData = JSON.parse(<data from file>);
const parsedData = mydata.map(function(val) {
val.value = parseFloat("554,20".replace(",", "."));
return val;
});
//go back to JSON:
JSON.stringify(parsedData);

(parseFloat 计算来自这个答案

最新更新