CreateOrderRequest req = new CreateOrderRequest();
req.pid=1111;
req.name="xxx";
TMemoryBuffer mem_buf = new TMemoryBuffer(512);
TJSONProtocol bin_proto = new TJSONProtocol(mem_buf,true);
try
{
req.write(bin_proto);
System.out.println("====begin serial json=================");
String jsonStr=mem_buf.toString("utf-8");
System.out.println("after jasonprocol="+jsonStr);
System.out.println("====begin deserial json=================");
CreateOrderRequest req2 = new CreateOrderRequest();
TMemoryBuffer mem_buf2 = new TMemoryBuffer(512);
byte[] data = jsonStr.getBytes();
mem_buf2.write(data);
TJSONProtocol bin_proto2 = new TJSONProtocol(mem_buf2,true);
req2.read(bin_proto2);
System.out.println("after de jasonprocol pid="+req.pid);
System.out.println("after de jasonprocol name="+req.name);
}
catch(Exception e)
{
System.out.println(e);
}
====begin serial json=================
after jasonprocol={"pid":{"i32":1111},"uid":{"i32":0},"corpId": {"i32":0},"sharePriceE6":{"i64":0},"shareCount":{"i32":0},"totalPriceE6":{"i64":0},"bankcardId":{"i32":0},"name":{"str":"xxx"},"isAnonymous":{"tf":0},"expectIncomeE6":{"i64":0},"clientId":{"i32":0},"totalAmtE6":{"i64":0},"subSrc":{"str":""}}
====begin deserial json=================
org.apache.thrift.protocol.TProtocolException: Unexpected character:p
Frage:
Wenn die fieldNamesAsString_ nicht wahr gesetzt ist, dann jasonStr
wird {"1": {"i32":1111},"2":{"i32":0},"3":{"i32":0},...
und kann zurück in CreateOrderRequest geschrieben werden, ich denke nicht, dass es sinnvoll ist.
Sie können ein Objekt in eine json str schreiben, aber nicht zurücklesen?
Vielen Dank für Ihre Antwort, aber ich denke, es wird nicht sehr komplex sein, die deserialize Verfahren zu implementieren, und warum es nicht tun? weil das TField sowohl die Sparifid als auch die fiedName, – robin
@robin, gespeichert hat. "Ich denke, es wird nicht sehr komplex zu implementieren sein." - Dies ist Open Source, also einfach weg Feuer! [Sie können gerne eine Pull-Anfrage stellen] (https://trift.apache.org/docs/HowToContribute). – JensG