JSON from EJS to JSON object in JS
14,873
try this:
var initData = JSON.parse('<%-JSON.stringify(list)%>');
OR:
var initData = <%-JSON.stringify(list)%>;
Author by
George L
Updated on June 20, 2022Comments
-
George L almost 2 years
I am using EJS with Node.JS, and am passing a JSON object into it, but need to have access to it as a usable object in the page. I am getting the unexpected token o error from this:
var initData=JSON.parse(<%-JSON.stringify(list)%>);
I cant figure out whats wrong here.
This is what it looks like in the file when rendered:
var initData=JSON.parse([{"title":"South Hills Health System - University Health Center","adr":"200 Lothrop St,15213","coords":"40.441875,-79.960813","images":[],"tags":[],"_id":"51c0e9798384f40000000017"},{"title":"Bombay Food Market","adr":"4605 Centre Avenue, Pittsburgh, PA 15213, USA","coords":null,"images":[],"tags":["indian","groceries","ethnic","store"],"_id":"51c0519e02b7cbec73000002"}]);
-
George L almost 11 yearsfirst one worked perfectly! could you explain why the single quotes makes it work though?
-
karaxuna almost 11 years@GeorgeL
JSON.parse
takes STRING as parameter and look at your output, you are passing array inJSON.parse
. single quotes does this:JSON.parse('[{ "title": "..." }]')
instead of this:JSON.parse([{ "title": "..." }])
-
OMGPOP almost 9 yearswhy is initData an object instead of a string? we stringified it
-
Vadorequest almost 9 years@OMGPOP I wonder the same and I guess it's related to the
<%-
operator somehow.<%=
would fail I think. -
Alex Ciminian over 8 yearsBe careful, this method does not work for arbitrary objects. For example, regexes end up as empty objects.
{ a: /bcd/ }
will output{ a: {} }
. This is because regexes have serialization issues - stackoverflow.com/questions/12075927/serialization-of-regexp. I don't know if other types have this problem. -
Danny Dulai almost 8 yearsthis doesn't work if you replace "South Hills" with "South Hill's"
-
Danny Dulai almost 8 yearsthe first one doesn't -- the second one works fine for single quotes.