I'm new to the thrift. I need to convert my data object to a JSON string
with Thrift JSON
serialization.
I tried in this way.
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); String json = serializer.toString(object_name);
In here is an error, that object_name
should be in TBase
. How can I resolve this ?
In here is an error, that object_name should be in TBase.
Next time, please post the exact error message (use copy+paste), this makes it easier for all of us.
How can I resolve this?
Whatever you want to serialize with Thrift, must be an descendant of Thrift's TBase
class. You achieve this by writing some Thrift IDL and save it as a file (e.g. MyDataStructs.thrift
):
struct Employee { 1: string name 2: string surname 3: i32 age }
Next, you pass that file to the Thrift compiler and tell him to generate some C# code from it:
thrift -gen csharp MyDataStructs.thrift
This gives you a class derived from 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 } }
This is what Thrift expects.
If below is what your are doing then it should work. Check if you are doing this. Employee is a demo call here, you have to use your actual class.
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);