I'm using Thrift for serializing objects (in C++) into JSON strings, which I then store as files. This usually works fine, but 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
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...
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.
Relevant thread on thrift-user mailing list can be found here: http://email@example.com%3e
I've also attached a quick patch that works on my setup (see the patch file comments for more information).