A solução foi ler linha por linha do arquivo e ir fazendo um parse para cada.
No caso do meu exemplo, também fiz as verificações necessárias pro meu caso.
router.get('/logs/file/alerts', (req, res) => {
fs.readFile('/foo/bar/logs/alerts/alerts.json', (err, snapshot) => {
if (err) console.log(err);
const results = [];
const data = snapshot.toString().split('\n');
for (var k = 0, i = data.length - 1; k < 10; i--) {
if (data[i].includes('key')) {
try {
let jsonResult = JSON.parse(data[i]);
results.push(jsonResult);
k++;
} catch (e) {
console.log(e);
}
}
}
res.json(results);
});
});
Answer from Maiky on Stack OverflowVideos
Cara, já sei o que deve estar rolando. O seu retorno de estar vindo em string, você tem que converter em objeto para poder manipula-lo.
Observe:
var valorRetornado = '[{"id":"769","cidade":"minhacidade","estado":"PR"},{"id":"855","cidade":"Caram","estado":"PR"}]'
// convertendo a string em objeto
var obj = JSON.parse(valorRetornado);
obj.forEach(function(o, index){
console.log(o.cidade);
});
Os colaboradores deram vários exemplos, mas em todos eles convertem objeto em string, quando na verdade vc deve fazer o contrário.
Amigo você tem um objeto em mãos. Para manipular o objeto você usa a sintaxe:
*object[key] ou object.key*
Em seu caso vai ficar:
console.log( data[0]['id'] );
Para inserir esses dados numa DIV ou qualquer elemento, você pode fazer isso de N maneiras. Pode ser pelo seletor CLASS ou pelo seletor ID, tem outras formas formas de fazer, mas a principio são essas. Voce pode ler a documentação do Jquery para maiores detalhes.
https://api.jquery.com/category/selectors/
Bons estudos amigos.