I have been trying to access the elements of a nested object but still have no success. I searched through existing similar questions on stackexchange (eg: this) but could not resolve my issue. I tried to access the final element using console.log(result.final) but it shows undefined in the console. Kindly advise.
var data = '{"response":{"valid":true,"final":{"message":" MS02","tags":{"d1":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9","d2":"JhbGciOiJIUzI1NiJ9eyJ0eXAiOiJKV1QiLC","d3":"dupb9WWT8ypQYWw6QblkM98xFBBRsamkkWLw","d5":"5EChV1KJ4ASeh9crZDR3fivnSz4wCDmCr2RSC0CUrkx","d6":"hiH1I1SI3NHCYZeva0_FrjgSgxOa_YW6ECxRdAY-w5w","ua":"y"},"ti":"","op":[]}}}';
var dataJson = JSON.parse(data);
var result = [];
result = Object.entries(dataJson).map(([key, value]) => ({ [key]: value }))
console.log(result)
console.log(result.final)
UPDATE
I used typeof
on dataJson
and it showed it as a string
so I did JSON.parse
one more time on dataJson
and then checked again with typeof
which showed object
and now after double JSON.parse
I was able to access the nested values with dot operator (result.final), without mapping.
You have been given multiple answers that work just fine based on the code that you've provided. Like I said in a comment earlier, you don't need to map the data to an array first before accessing its data.
var data = '{"response":{"valid":true,"final":{"message":" MS02","tags":{"d1":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9","d2":"JhbGciOiJIUzI1NiJ9eyJ0eXAiOiJKV1QiLC","d3":"dupb9WWT8ypQYWw6QblkM98xFBBRsamkkWLw","d5":"5EChV1KJ4ASeh9crZDR3fivnSz4wCDmCr2RSC0CUrkx","d6":"hiH1I1SI3NHCYZeva0_FrjgSgxOa_YW6ECxRdAY-w5w","ua":"y"},"ti":"","op":[]}}}';
var dataJson = JSON.parse(data);
console.log(dataJson.response.final);
If this doesn't work for you, then the information you've given might be incorrect or incomplete. Please provide for us a minimal reproducible example that clearly demonstrates the issue you're having.