Reputation: 1220
I have a like this object as a string. if that object like this below, no problem
var txt = '{ "title": "001188", "name": "Input 1", "data": "false" }'
var arr = [];
var obj = JSON.parse(txt);
arr.push(obj)
document.getElementById("demo").innerHTML = arr[0].name;
but if I try to convert this object, there was an error
var txt = '{ "title": "001188", "name": "Input 1", "data": "false" }, { "title": "001188", "name": "Input 2", "data": "false" }, { "title": "001188", "name": "Input 3", "data": "false" }, { "title": "001188", "name": "Input 4", "data": "false" }, { "title": "001188", "name": "Input 5", "data": "false" }'
var arr = [];
var obj = JSON.parse(txt);
arr.push(obj)
document.getElementById("demo").innerHTML = arr[0].name;
Error is below
Unexpected token , in JSON at position 57
How can I do this. Thanks
Upvotes: 0
Views: 65
Reputation: 784
{...}
is used to define a single object, while the other [...]
is used to define a sequence of either objects, values or lists ...
objects are defined as such {key:object or list or value , ...}
list are nothing more than a sequence of either objects or lists or values, [objects or list or values, ... ]
...
[{'value':1}, {'values':[1,2,3,3, {'a':'a', 'b':'b'}]}, 2, 3, 4]
Just enclose you array of json objects in [...]
var txt = '[{ "title": "001188", "name": "Input 1", "data": "false" }, { "title": "001188", "name": "Input 2", "data": "false" }, { "title": "001188", "name": "Input 3", "data": "false" }, { "title": "001188", "name": "Input 4", "data": "false" }, { "title": "001188", "name": "Input 5", "data": "false" }]'
var arr = [];
var obj = JSON.parse(txt);
arr.push(obj)
document.getElementById("demo").innerHTML = arr[0].name;
reference from an old question on stackoverflow
Upvotes: 0
Reputation: 2412
That's because your JSON is invalid. The objects in your JSON have to be in an array. Something like this:
[{ "title": "001188", "name": "Input 1", "data": "false" }, { "title": "001188", "name": "Input 2", "data": "false" }, { "title": "001188", "name": "Input 3", "data": "false" }, { "title": "001188", "name": "Input 4", "data": "false" }, { "title": "001188", "name": "Input 5", "data": "false" }]
instead of
{ "title": "001188", "name": "Input 1", "data": "false" }, { "title": "001188", "name": "Input 2", "data": "false" }, { "title": "001188", "name": "Input 3", "data": "false" }, { "title": "001188", "name": "Input 4", "data": "false" }, { "title": "001188", "name": "Input 5", "data": "false" }
And then parse your JSON. Also, you don't have to push the parsed result into an array as it will create a 2D array unnecessarily.
var txt = '[{ "title": "001188", "name": "Input 1", "data": "false" }, { "title": "001188", "name": "Input 2", "data": "false" }, { "title": "001188", "name": "Input 3", "data": "false" }, { "title": "001188", "name": "Input 4", "data": "false" }, { "title": "001188", "name": "Input 5", "data": "false" }]'
var arr = JSON.parse(txt);
console.log(arr[0].name);
Upvotes: 2
Reputation: 191
var txt = '[{ "title": "001188", "name": "Input 1", "data": "false" }, { "title": "001188", "name": "Input 2", "data": "false" }, { "title": "001188", "name": "Input 3", "data": "false" }, { "title": "001188", "name": "Input 4", "data": "false" }, { "title": "001188", "name": "Input 5", "data": "false" }]'
var arr = [];
var obj = JSON.parse(txt);
arr.push(obj)
document.getElementById("demo").innerHTML = arr[0].name;
Can you try this? The [ ] were missing it seems.
Upvotes: 0