0

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

1
  • 6
    Your second example is not JSON. It is multiple JSON-encoded objects, listed just comma-separated one after each other. Easiest way to solve this, would probably be to add [ and ] at the beginning and end, so that you have an array of objects, which would be proper JSON again. Commented Mar 9, 2021 at 12:38

3 Answers 3

2

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);

Sign up to request clarification or add additional context in comments.

1 Comment

thanks. my problem has been solved by your answer
0
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.

Comments

0

{...} 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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.