I observed a very weird phenomena in javascript and I can't figure out why. Consider this example below
state = "West Bengal"
city = "Kolkata"
country = "India"
some_json = {country: {"city": city, "state": state, "col_val": {}}}
console.log(some_json)
When I do a console.log()
of some_json
variable, I get this below
{ country: { city: 'Kolkata', state: 'West Bengal', col_val: {} } }
As you can see it replaced every other variable's values with the one defined above except country
. Why is that?
When I perform the same operation in Python, it works just fine.
state = "West Bengal"
city = "Kolkata"
country = "India"
some_json = {country: {"city": city, "state": state, "col_val": {}}}
print(some_json)
Here doing a print
gives me the expected outcome
{'India': {'state': 'West Bengal', 'col_val': {}, 'city': 'Kolkata'}}
So why is it giving different outcome in javascript? How can I fix this since I need to work with this exact format?
When using a variable as key of an object in javascript use square bracket
let state = "West Bengal"
let city = "Kolkata"
let country = "India"
some_json = {
[country]: {
"city": city,
"state": state,
"col_val": {}
}
}
console.log(some_json)
You need to make country
a dynamic property name with []
:
var state = "West Bengal",
city = "Kolkata",
country = "India",
some_json = {
[country]: {
"city": city,
"state": state,
"col_val": {}
}
};
console.log(some_json);
Also for the record it's not a JSON object - JSON would be storing it as a string. It's a plain and simple JavaScript object.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With