我是Thrift的新手。我需要将我的数据对象使用Thrift JSON序列化转换为JSON字符串
。
我尝试过以下方式。
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(object_name);
这里出现了一个错误,object_name
应该在 TBase
中。我该如何解决?
我是Thrift的新手。我需要将我的数据对象使用Thrift JSON序列化转换为JSON字符串
。
我尝试过以下方式。
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(object_name);
这里出现了一个错误,object_name
应该在 TBase
中。我该如何解决?
这里有一个错误,object_name 应该在 TBase 中。
下次请粘贴完整的错误信息,这样对我们所有人都更方便。
我该如何解决这个问题?
无论您想要使用 Thrift 进行序列化的内容是什么,都必须是 Thrift 的 TBase
类的后代。您可以通过编写一些 Thrift IDL 并将其保存为文件(例如 MyDataStructs.thrift
)来实现此目的:
struct Employee {
1: string name
2: string surname
3: i32 age
}
接下来,您将该文件传递给Thrift编译器,并告诉它从中生成一些C#代码:
thrift -gen csharp MyDataStructs.thrift
public partial class Employee : TBase
{
private string _name;
private string _surname;
private int _age;
// properties
public string Name {... }
public string Surname { ... }
public int Age { ... }
// some details omitted
public void Read (TProtocol iprot)
{
// generated code for Read() method
}
public void Write(TProtocol oprot) {
// generated code for Write() method
}
public override string ToString() {
// generated code for ToString() method
}
}
这是Thrift所期望的。
Employee object_name= new Employee();
object_name.setAge(27);
object_name.setName("Test");
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(object_name);