Task.thrift (Thrift version 0.9.3)
enum AttributeApp {
a = 1,
b = 2,
c = 3
}
typedef i32 attrTypeId
struct Task {
1: required attrTypeId type_id,
2: required list<AttributeApp> app_to,
}
Generated Apache Thrift code for Java marshal enums by numbers.
$ thrift -r --gen java Task.thrift
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(task);
Util.writeLog("task.json", json);
How to generate Apache Thrift code for Golang with JSON marshal enum by number instead of name?
$ thrift -r --gen go Task.thrift
This example make enums by strings:
bt, err := json.Marshal(task)
if err != nil {
return err
}
err = ioutil.WriteFile("task.json", bt, 0666)
This example make enums by numbers, but add two extra numbers in any list of json:
transport := thrift.NewTMemoryBufferLen(1024)
protocol := thrift.NewTSimpleJSONProtocolFactory().GetProtocol(transport)
ts := &thrift.TSerializer{transport, protocol}
bt, err := ts.Write(task)
if err != nil {
return err
}
err = ioutil.WriteFile("task.json", bt, 0666)