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