I am fetching a .js file from a remote site that contains data I want to process as JSON using the simplejson library on my Google App Engine site. The .js file looks like this:
var txns = [
{ apples: '100', oranges: '20', type: 'SELL'},
{ apples: '200', oranges: '10', type: 'BUY'}]
I have no control over the format of this file. What I did at first just to hack through it was to chop the "var txns = " bit off of the string and then do a series of .replace(old, new, [count]) on the string until it looked like standard JSON:
cleanJSON = malformedJSON.replace("'", '"').replace('apples:', '"apples":').replace('oranges:', '"oranges":').replace('type:', '"type":').replace('{', '{"transaction":{').replace('}', '}}')
So that it now looks like:
[{ "transaction" : { "apples": "100", "oranges": "20", "type": "SELL"} },
{ "transaction" : { "apples": "200", "oranges": "10", "type": "BUY"} }]
How would you tackle this formatting issue? Is there a known way (library, script) to format a JavaScript array into JSON notation?
It’s not too difficult to write your own little parsor for that using PyParsing.
This is going to print
You can also add the assignment to the grammar itself. Given there are already off-the-shelf parsers for it, you should better use those.