skip to Main Content

From a REST API I am receiving a JSON string to which I am trying to parse using JSON.parse(), surprisingly it is failing if within a file path a folder name starts with character u.

For eg.

Consider below JSON:

{"FullPath":"C:\unitTest\bcjmail-jdk15to18-1.70.jar"}

This is a valid JSON, but I try to

JSON.parse('{"FullPath":"C:\unitTest\bcjmail-jdk15to18-1.70.jar"}');

Then it gives me error JSON.parse: bad Unicode escape at line 1 column 18 of the JSON data and if I modify the folder name unitTest to aunitTest then parsing is successful. Looks like if folder name is starting with character u then it is being considered as u which is itself a escape character.

How can I solve this?

3

Answers


  1. Try to stringify first

    JSON.parse(JSON.stringify({"FullPath":"C:\unitTest\bcjmail-jdk15to18-1.70.jar"}))

    Login or Signup to reply.
  2. Backslashes are used as escape characters, and they need to be escaped themselves if they are to be included in the string.
    You can also replace all backslashes with forward slashes and then parse.

    let jsonString = '{"FullPath":"C:/unitTest/bcjmail-jdk15to18-1.70.jar"}';
    let obj = JSON.parse(jsonString);
    console.log(obj);  // { FullPath: 'C:/unitTest/bcjmail-jdk15to18-1.70.jar' }
    

    OR

    let jsonString = '{"FullPath":"C:\\unitTest\\bcjmail-jdk15to18-1.70.jar"}';
    let obj = JSON.parse(jsonString);
    console.log(obj);  // { FullPath: 'C:\unitTest\bcjmail-jdk15to18-1.70.jar' }
    
    Login or Signup to reply.
  3. A JSON string must be double-quoted, according to the specs, so you don’t need to escape ‘.
    If you have to use special character in your JSON string, you can escape it using character.
    So you can try this
    let s = '{"FullPath":"C:\unitTest\bcjmail-jdk15to18-1.70.jar"}' let sr = s.replaceAll('\','/') JSON.parse(sr)

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search