Home > Software engineering >  Javascript parse a string with commas
Javascript parse a string with commas

Time:05-06

I am getting this string from my api call:

"{'attachments': [{'type': 'html', 'html': 'text-test'}, {'type': 'album', 'album': [{'url': 'htps://s3.eu-central-8f7ba8d118dbf1/pic/cdyegkwkaije7720e2f72.jpg', 'type': 'image'}]}]}"

I need to find a way to parse it and be able to iterate over the items in attachments list, but when I try to run JSON.parse(str) I am getting an error, I guess because the word attachments has commas around it.

The error is Uncaught SyntaxError: Unexpected token ' in JSON at position 1 at JSON.parse

How can I decode it to be able to reach the attachments?

CodePudding user response:

you have to replace ' with " . try this

var jsonStr ="{'attachments': [{'type': ..." //your api string

jsonStr = jsonStr.replaceAll("'","\"");
var result = JSON.parse(jsonStr);

CodePudding user response:

JSON requires ", not '. If this is your own API, you should change the implementation to return " quotations. Best to use JSON.stringify(objectDataToSend) if your API is written in JavaScript.

If this is not your own API, I'd suggest using the String.replaceAll() function to replace all ' with ":

let data = "{'attachments': [{'type': 'html', 'html': 'text-test'}, {'type': 'album', 'album': [{'url': 'htps://s3.eu-central-8f7ba8d118dbf1/pic/cdyegkwkaije7720e2f72.jpg', 'type': 'image'}]}]}"

const result = JSON.parse(data.replaceAll("'", '"'));
  • Related