Hello Simon, If you create a Jira issue for this bug a Thrift developer (could be you or any other interested party) will repair the flaw and you can track it through the issue ticket.
https://issues.apache.org/jira/browse/THRIFT/?selectedTab=com.atlassian.jira.jira-projects-plugin:issues-panel The Boost Lexical cast header is 2,747 lines long and it includes 10-15 similar headers. Something simpler here would make a lot of sense. Best, Randy On Tue, Dec 2, 2014 at 1:47 AM, Simon Falsig <[email protected]> wrote: > Hi, > > I'm using Thrift for serializing objects (in C++) into JSON strings, which > I then store as files. This usually works fine, but I just discovered that > if the locale of my system is set to a locale where the decimal separator > is ',' instead of '.' (for instance in Denmark), then the TJSONProtocol > (specifically the writeJSONDouble function that does the double to string > conversion through a boost::lexical_cast) will also use this separator > when serializing doubles. This kinda plays havoc with the JSON > specification, which does not allow for localized formatting, and depends > on always using '.' as a decimal separator. I could imagine that there may > be other more subtle places where the local can have an effect, but this > is currently the only place I've been having trouble with. > > I can see that the same problem has been fixed for C# (commit > 3da317bda100130b2f615034c46b0944888f0f14 / THRIFT-1245 C# JSON Protocol > uses culture-dependant decimal separator for double) but it doesn't seem > as if there's a similarly easy way to fix boost::lexical_cast... > In any case, I'm not too strong with respect to all this locale stuff, so > if anyone has a quick way to fix this, I'd be very interested. > > Note that I'm using Thrift 0.9.0, but as far as I can see there hasn't > been any relevant changes to TJSONProtocol.cpp since that. > > Thanks in advance, > - Simon
