2017-05-10 1 views
0

에 JSON 문자열을 변경하려면 "127,30" }어떻게이 같은 JSON이 롱/더블/수

나는이처럼 더블/번호에 "값"필드를 변경하려면 :

{ "id_document": "12345679", "이름" "John SMmith", "값": 127.30 }

문제는 내가 JSON 데이터가 많다는 것입니다 (예 : 70k 라인). 그래서 이것을 자동화하는 방법이 필요합니다. 사람이 ideias 있나요?

어떤 언어로도 해결할 수 있습니다. 나는 NodeJS를 시도하고 있었다.

도움 주셔서 감사합니다.

편집 :

내 JSON 파일이 같은 :

{ "DESPESA": [{ "sgPartido": "DEM", "numMes": 1, "txtCNPJCPF": "03625917000170" "vlrGlosa": "0", "txNomeParlamentar": "ABEL MESQUITA JR.", "sgUF": "RR", "nuCarteiraParlamentar": 1, "vlrDocumento": "4007,06", "nuDeputadoId": 3074, 55, "vlrRestituicao": "0", "numParcela": 0, "txtDescricao": null, "datEmissao": null, "datEmissao": null, "codLegislatura" "txtNumero": "4339", "numEspecificacaoSubCota": 1, "txtFornecedor": "BB PETROLEO LTDA", "numLote": 1354058, "indTipoDocumento": 0, "idecada 스트로브 ": 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!'); 
}); 
}); 

덕분에 도움이 답변이 차이를 만들어 : 나는 너희들을했다가, 결과는 것이 었습니다.

답변

0

객체의 배열이 데이터를 가정 할, 당신은 당신이 당신의 개체를 구문 분석하는 하나의 함수를 작성할 수 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 계산 this answer에서이 같은

+0

뭔가를했다 때 fs =은 ('FS')을 필요로; var에 m = 'out.json'; fs.readFile (m, 'UTF8' 함수 (오류, 데이터) { \t data = JSON.parse (data); \t Object.keys (데이터) .forEach (함수 (vlrDocumento) { \t \t vlrDocumento.value =에서는 parseFloat (vlrDocumento.replace (",", ".")) \t \t JSON.stringify (vlrDocumento.value) \t}) }); – Yago

+0

여기에 Object.keys()가 무엇을 할 것인지 잘 모르겠다. 하나의 거대한 JSON 객체가있는 단일 파일이 있으면 그 구조가 무엇인지 궁금 할 것이다.그것이 객체의 배열이라면, 당신은 객체가 아닙니다. 키, forEach 또는 map을 사용할 것입니다. – JoeTortuga

+0

JSON의 한 Object로 내 질문을 편집했습니다. "vlrDocumento": "4007,06"항목을 "vlrDocumento": 4007.06 및 모든 70k others 개체로 변경하려고합니다. 동일한 "vlrDocumento"키에 대해 서로 다른 값을 가진 각각 하나. – Yago