Go implementation of JSON and simple JSON protocols encode Thrift byte type field as unsigned 8bit integer.
i.e. -1 is encoded to "255" by Go implementation while "-1" by others like C++, Java and Python.
Cross test with go server and py client (JSON protocols of course).
(like "expected -127 but got 129")
Static-typed clients (such as C++ and Java) are not likely to notice the difference because of integer overflow.
Explicitly convert the unsigned 8-bit value back to signed one in JSON protocols before converting to text.