Home > Software engineering >  How to read specific object from json file in JavaScript?
How to read specific object from json file in JavaScript?

Time:03-27

I'm trying to work with a json file but I can't figure out how to read just a specific object from a json file.

My current code looks like this:

try {
    const data = fs.readFileSync("addresses.json", "utf8");
    console.log(data);
} catch (err) {
    console.error(err);
}

This works fine. However when I try to get some object from the file like this:

console.log(data.address)

It doesn't work because it is a string.

So my question is how can I read just a single object from the json file.

Thanks a lot!

CodePudding user response:

Try:

const parsedData = JSON.parse(data)
const address = parsedData.address

CodePudding user response:

You need to use JSON.parse(), as right now, you are trying to access a property off of a string. However, the method will change it to an object.

// Dummy JSON data
const data = `{ "address": "Stack Overflow" }`;

const json = JSON.parse(data);
console.log(json.address);

This will make it possible to access the properties off of the object.

CodePudding user response:

you must convert the data into json like so:

    JSON.parse(data)

In your example :

    try {
        const data = fs.readFileSync("addresses.json", "utf8");
        console.log(JSON.parse(data).address);
    } catch (err) {
        console.error(err);
    }

I hope I answered your question. Feel free to comment if I misunderstood you or you have some questions ;)

CodePudding user response:

It doesn't execute right away, rather it executes when the file loading has completed. When you call readFile, control is returned immediately and the next line of code is executed. So when you call console.log, your callback has not yet been invoked, and this content has not yet been set. Welcome to asynchronous programming.

const fs = require('fs'); 
fs.readFile('addresses.json', function read(err, data) {
if (err) {
    throw err;
}
    const content = data;
    processFile(content);    
});

function processFile(content) {
    console.log(content);
}
  • Related