On Thu, Oct 9, 2014 at 12:49 AM, Roger Meier <ro...@bufferoverflow.ch> wrote:
> Hi Peter > > Quoting Peter Neumark <neumark.pe...@gmail.com>: > > Thanks, Roger! >> >> I'm also posting this to the dev list, because I think that may be more >> appropriate than user@. >> > Yes, that's why I'm cross posting now. > > The json generator is awesome (any estimate on when it will be merged?), >> > there are two versions and I like to have one... > I'm ready to commit it as soon as I get proper response on my questions > on that issue. Json Schema is what i would like to have for the future. > What can I do to get this into the master branch? > but that's not really what I was working on. >> The goal here is to ready an aribrary JSON message as thrift data. >> > Yes, I know. However using a schema would simplify this and that's why I > started to talk about the json generator. > -roger > > >> Pete >> >> On Wed, Oct 8, 2014 at 11:47 AM, Roger Meier <ro...@bufferoverflow.ch> >> wrote: >> >> Hi Peter >>> >>> Yes, JSON is worth to add and I see an option by using json schema as >>> mentioned here: >>> https://issues.apache.org/jira/browse/THRIFT-2360 >>> >>> best! >>> -roger >>> >>> >>> Quoting Peter Neumark <neumark.pe...@gmail.com>: >>> >>> Hi all, >>> >>>> >>>> At Prezi, we currently use Thrift for a lot of the internal >>>> communication >>>> between services. A lot of engineers would like to keep using HTTP + >>>> JSON >>>> as means of communicating between services, but with some sort of >>>> schema. >>>> >>>> After evaluating several alternatives, the best idea we had so far was >>>> to >>>> use the thrift IDL as the schema, and beef up the existing >>>> TSimpleJSONProtocol code to read arbitrary JSON messages. >>>> >>>> What I'm most interested in is whether or not someone else is already >>>> doing >>>> this? >>>> >>>> I have a very early stage python implementation of such a protocol here: >>>> https://github.com/neumark/thriftmodel/blob/master/thriftmodel/ >>>> TFlexibleJSONProtocol.py >>>> >>>> We'll probably create an implementation for Java as well. >>>> The most difficult issue with reading JSON is that a lot of existing >>>> JSON >>>> protocols allow for several different types in a field. My solution was >>>> to >>>> have an "unboxed union". To illustrate this with an example, if we >>>> accept >>>> the following messages: >>>> >>>> {"id": 1, "expires": 32324234234} >>>> {"id": 1, "expires": "2014.10.07 10:34"} >>>> {"id": 1, "expires": false} >>>> >>>> Then our Thrift definition would be >>>> >>>> // Note: this is an unboxed union >>>> union { // or struct in my implementation because python has no union >>>> yet >>>> 1: i64 unix_timestamp, >>>> 2: string date_string, >>>> 3: bool expiration_switch >>>> } >>>> >>>> struct msg { >>>> 1: i64 id, >>>> 2: expiry expires >>>> } >>>> >>>> The "expires" field must be read "unboxed" so to speak. >>>> What's the best option for encoding this in the thrift IDL? >>>> Has anyone considered adding annotations to the IDL for similar >>>> purposes? >>>> >>>> Thanks, >>>> Peter >>>> >>>> >>> >>> >>> > > -- *Peter Neumark* DevOps guy @Prezi <http://prezi.com>