【发布时间】:2016-08-15 20:40:45
【问题描述】:
Task.thrift (Thrift 版本 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,
}
为 Java 编组枚举生成 Apache Thrift 代码。
$ thrift -r --gen java Task.thrift
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(task);
Util.writeLog("task.json", json);
如何使用 JSON 编组枚举按数字而不是名称为 Golang 生成 Apache Thrift 代码?
$ thrift -r --gen go Task.thrift
这个例子通过字符串创建枚举:
bt, err := json.Marshal(task)
if err != nil {
return err
}
err = ioutil.WriteFile("task.json", bt, 0666)
这个例子用数字创建枚举,但是在任何 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)
【问题讨论】:
标签: go enums code-generation marshalling thrift