I think the Java library has a "TSimpleJsonProtocol" that does something like this. It shouldn't be too hard to do the same for C++. I think the biggest complication is that JSON does allow trailing commas.
--David Rush Manbert wrote: > Hi, > > I have copied and hacked TJSONProtocol.cpp to make a version that just > generates standard JSON when an object is written. > > By this I mean that if I had this struct definition: > > struct ExtendedStatus { > 1: i32 status, > 2: i32 state, > 3: i32 percentComplete, > 4: i32 elapsedMsec, > 5: string statusDescription, > 6: string exceptionMsg, > } > > my protocol would serialize it as this: > > {"status":2,"state":5,"percentComplete:40,"elapsedMsec":1200,"statusDescription":"Talking > to the server","exceptionMsg:""} > > (I wrote this by hand, so it might not be totally correct. The point is that > it doesn't encode types, etc. It just uses the member names.) > > If my Javascript side had a standard object prototype definition for > ExtendedStatus, then I can serialize C++ thrift classes from C++, transmit > them to my Javascript code, and evaluate the JSON to create an ExtendedStatus > object and use it. > > What I'm missing is the code generation for the prototypes. > > By any chance, has anyone done this already, and would they be willing to > share? Otherwise I guess we'll see about hacking the C++ generator to make > one, but that means adding a new generator type, or maybe just making the cpp > code generator also generate the prototype JS file automatically. > > Better still, has anyone secretly written the Javascript code generator that > would work with the TJSONProtocol implementation? > > Or does anyone have another idea of how I can achieve this? I have written a > few of these by hand, but it's easy to make mistakes and you need to know > when the thrift IDL file changes. > > - Rush