使用thrift json序列化将对象转换为JSON字符串

我是节俭的新手。 我需要使用Thrift JSON序列化将我的数据对象转换为JSON string

我试过这种方式。

 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 )来实现此MyDataStructs.thrift

 struct Employee { 1: string name 2: string surname 3: i32 age } 

接下来,将该文件传递给Thrift编译器并告诉他从中生成一些C#代码:

 thrift -gen csharp MyDataStructs.thrift 

这为您提供了一个源自TBase的类:

 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);