[PATCH 2/2] Generate correct json

Salvo Tomaselli tiposchi at tiscali.it
Tue Aug 26 14:08:56 PDT 2014


Hello,

First, let me point out that the json parser of Python, rejecting because of 
the extra commas is not wrong. That's how the format is defined.

I had started to fix the generation in a trivial way by changing all the bits 
where it puts commas (I wasn't using a do..while so it didn't look as good as 
the one Linus posted) but I got stuck in parts where there are functions 
appending strings like "{stuff}," which would also need to be fixed.

It can certainly be fixed but it requires more work.

The "fixing" is done in two stages but could be changed to do the moving and 
the scanning together, but I believe the code would be more complicated by 
mixing scanning and moving together.
Overall, the first step is O(n) and uses constant memory, while the 2nd step 
depends on the amount of extra commas and their relative distance, but there 
should be a somewhat linear correlation between that and the size of the 
buffer.

Feel free to reject this if you think that it has to be done with a more 
proper solution.

Best


In data martedì 26 agosto 2014 11:08:39, Dirk Hohndel ha scritto:
> On Tue, Aug 26, 2014 at 07:56:20PM +0200, Salvo 'LtWorf' Tomaselli wrote:
> > Not quite the solution I'd want, but the json generation would need
> > to be re-done from scratch to generate valid json code.
> 
> ... and that is considered not worth it?


> 
> > Instead, I wrote this, to find and remove the guilty commas. It tries to
> > move as little bytes around as possible, and writing it felt like
> > interviewing for a position at Facebook.
> 
> I don't know about Facebook's interview process... but I don't think this
> is the way I would have done this. Why not just do the memmove on the fly
> while you scan the string?
> This seems rather fragile to me.


-- 
Salvo Tomaselli

"Io non mi sento obbligato a credere che lo stesso Dio che ci ha dotato di
senso, ragione ed intelletto intendesse che noi ne facessimo a meno."
                -- Galileo Galilei

http://ltworf.github.io/ltworf/


More information about the subsurface mailing list