2016-08-12 6 views
0

Task.thrift (Бережливость версия 0.9.3)Как сохранить бережливую структуру в удобном для пользователя формате JSON с перечислением чисел в Голанге?

enum AttributeApp { 
    a = 1, 
    b = 2, 
    c = 3 
} 

typedef i32 attrTypeId 

struct Task { 
    1: required attrTypeId type_id, 
    2: required list<AttributeApp> app_to, 
} 

Сформирован Apache Бережливость код Java маршала перечислений по номерам.

$ бережливость -r --gen Java Task.thrift

TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); 
String json = serializer.toString(task); 
Util.writeLog("task.json", json); 

Как создать Apache код бережливости для Golang с JSON маршалом перечисления по номеру вместо имени?

$ бережливости -r --gen пойти 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) 

ответ

0

Вместо этого используйте TJSONProtocol, это дает вам сменный формат данных на основе JSON.

TSimpleJSONProtocol is not intended to be used as a serialization format, at least not when you plan to read it back into your program using Thrift.

Помимо этого, если TSimpleJSONProtocol производит различные выходные данные для Java и Go, возможно, вы обнаружили несоответствие и рассмотрите вопрос о подаче билета JIRA, включая подходящий тестовый пример.

+0

Интересует сериализация в удобном для пользователя формате JSON. TJSONProtocol работает отлично, но не удобен для пользователя. –

0

Удалить this совершить и переделать бережливость-0.9.3, затем использовать json.Marshal/Unmarshal.

 Смежные вопросы

  • Нет связанных вопросов^_^