// This is all you have to do JSON.parse(jsonObject);
After 4 hours and much googling I had no answer. I though for some reason the server response had the wrong type of quotes on it, but turned out to be something very left field.
I used JSON.stringify() on the server response and saw something really weird on the end of the string that wasn't showing up by looking at the response.
// What is this?! '"timeCreated\":1390518047098}\u0000\u0000\'
The \u0000 character was choking the parser and wasn't showing up as a bad token. This is the unicode character for null. Not sure why it was on the response but it was causing the problem. Running this cleaned up the problem.
// Take out the garbage [server response] = [server response].replace(/\u0000/g, "")
As a safety measure it's good to have a method you can use to clean your JSON strings before trying to parse them.