Reputation: 73
I'm trying to reference self-key to in a JSON file in a simple Hello World NodeJS app.
{ "person": { "first_name": "Aminul", "last_name": "Islam" }, "full_name": "{$person.first_name} {$person.last_name}" }
and the app file.
const person = require('./app.json'); console.log(person.full_name);
Expecting result:
Aminul Islam
Result:
{$person.first_name} {$person.last_name}
Upvotes: 2
Views: 11161
Reputation: 178
This is because JSON does not support the use of {$person.first_name}
. It treats it as a string. JSON does no processing for you and is simply a method of holding data.
Your method for reading in the JSON data also appears a little odd. I actually have no idea how that's working for you. The more robust method is as follows:
var fs = require("fs");
var file = fs.readFileSync("./app.json");
var jsonData = JSON.parse(file);
var person = jsonData.person;
console.log(person.first_name + " " + person.last_name);
You already have your data defined no need to expand the contents of your JS file with duplicate data (even if it is in another format).
If you truly need that formatting, generate that data when you create the JSON. If you already have that information being inserted anyway, it's just one more step to add a variable with that formatting.
Upvotes: 0
Reputation: 5707
it won't work in JSON here is a js workaround
const data = {
"person": {
"first_name": "Aminul",
"last_name": "Islam"
}
}
data["full_name"] = `${data.person.first_name} ${data.person.last_name}`
module.exports = data
and import it
const person = require('./app.js');
console.log(person.full_name);
Upvotes: 1
Reputation: 944010
JSON and Node.js simply don't work like that.
To get that effect you'd need to so something along the lines of:
fs.readFile
JSON.parse
.Upvotes: 1