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.
For reading the external Local JSON file (data.json) using javascript, first create your data.json file:
data = '[{"name" : "Ashwin", "age" : "20"},{"name" : "Abhinandan", "age" : "20"}]';
Then,
Mention the path of the json file in the script source along with the javascript file
<script type="text/javascript" src="data.json"></script> <script type="text/javascript" src="javascript.js"></script>Get the Object from the json file
var mydata = JSON.parse(data); alert(mydata[0].name); alert(mydata[0].age); alert(mydata[1].name); alert(mydata[1].age);
The loading of a .json file from a hard disk is an asynchronous operation, and thus it needs to specify a callback function to execute after the file is loaded.
function readTextFile(file, callback) {
var rawFile = new XMLHttpRequest();
rawFile.overrideMimeType("application/json");
rawFile.open("GET", file, true);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4 && rawFile.status == "200") {
callback(rawFile.responseText);
}
}
rawFile.send(null);
}
//usage:
readTextFile("/Users/Documents/workspace/test.json", function(text){
var data = JSON.parse(text);
console.log(data);
});
This function also works for loading a .html or .txt files, by overriding the mime type parameter to "text/html", "text/plain", etc.