我有一个这样的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 计算来自这个答案