as3corelib icon indicating copy to clipboard operation
as3corelib copied to clipboard

Add line numbers to parse errors

Open darronschall opened this issue 15 years ago • 2 comments

Originally filed by Touvan on 2010-02-17T21:42:37

What steps will reproduce the problem?

  1. If you parse a manually create JSON file, it does not give you a line error for the error in the error text.

You can get the line number using something like this:

try { JSON.decode(rawJSONString); } catch (e:JSONParseError) { String(rawJSONString).substring(0, e.location).split("\n").length }

It would be nicer if it was already included in the error text.

I'd be happy to make a patch if you are interested (I assume I'd have to patch the tokenizer.parseError() lines in JSONDecoder.as ..)

darronschall avatar Jul 28 '10 20:07 darronschall

Updated by Touvan on 2010-02-17T21:54:32

oh, or maybe JSONTokenizer.as

darronschall avatar Jul 28 '10 20:07 darronschall

Updated by Touvan on 2010-03-03T19:35:51

I did this in JSONTokenizer, though I'm sure a property with the line number and a way to append it in the parseError (where the rest of the message is constructed) call would be more appropriate. This worked for my needs though.

public function parseError( message:String ):void { throw new JSONParseError( message + " (line " + jsonString.substring(0, loc).split("\n").length +")", loc, jsonString ); }

darronschall avatar Jul 28 '10 20:07 darronschall