mikechambers / as3corelib

An ActionScript 3 Library that contains a number of classes and utilities for working with ActionScript? 3. These include classes for MD5 and SHA 1 hashing, Image encoders, and JSON serialization as well as general String, Number and Date APIs.
1.5k stars 451 forks source link

Add line numbers to parse errors #134

Open darronschall opened 14 years ago

darronschall commented 14 years ago

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 commented 14 years ago

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

oh, or maybe JSONTokenizer.as

darronschall commented 14 years ago

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 ); }