4

I am using the following JS code to parse a JSON string from a separate JS file:

// extract JSON from a module's JS var jsonMatch = data.match( /\/\*JSON\[\*\/([\s\S]*?)\/\*\]JSON\*\// ); data = JSON.parse( jsonMatch ? jsonMatch[1] : data ); 

This is an example of the JS file I extract the JSON string from:

JsonString = /*JSON[*/{"entities":[{"type":"EntityPlayer","x":88,"y":138}]}/*]JSON*/; 

This code works just fine, however if the JS file with the JSON string contains carriage returns and isn't on one complete line then I get a syntax error.

Example:

JsonString = /*JSON[*/{ "entities":[{ "type":"EntityPlayer", "x":88, "y":138}] }/*]JSON*/; 

Returns the following error:

JSON.parse: unexpected non-whitespace character after JSON data 

Any idea how I could modify my parsing to work by either stripping out whitespace or to remove carriage returns and new line spaces?

3
  • You could be overthinking it. How are you fetching this file? How do you get it's contents? Commented Jun 14, 2012 at 6:46
  • I am not seeing that problem: jsfiddle.net/UrQ7Y Commented Jun 14, 2012 at 6:50
  • I agree with above probably best to try and get rid of the carriage returns and white space rather than code around it. In php you could use some like json_encode to do this for you. Commented Jun 14, 2012 at 6:52

2 Answers 2

6
data = JSON.parse( (jsonMatch ? jsonMatch[1] : data).replace(/\n/g,"") ); 
Sign up to request clarification or add additional context in comments.

1 Comment

I'll accept this answer, however the following was actually an issue where I wasn't closing a StreamReader object in my C# code.
-1

Did not test it, but maybe this is what you are looking for?

var JsonString = JsonString.replace(new RegExp( "\\n", "g" ),""); 

(from http://www.bennadel.com/blog/161-Ask-Ben-Javascript-Replace-And-Multiple-Lines-Line-Breaks.htm)

2 Comments

Whitespace is perfectly valid in a JSON string.
Okay, sorry I understood the question in a wrong way. Though it's more or less java string replacement.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.