thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Reiss <>
Subject Re: Javascript prototype generation anyone?
Date Thu, 13 May 2010 23:10:55 GMT
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.


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

View raw message