Tag: thrift protocol

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

我是节俭的新手。 我需要使用Thrift JSON序列化将我的数据对象转换为JSON string 。 我试过这种方式。 TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); String json = serializer.toString(object_name); 在这里是一个错误, object_name应该在TBase 。 我该如何解决这个问题?

节俭 – 从简单的JSON转换

我创建了以下Thrift对象: struct Student{ 1: string id; 2: string firstName; 3: string lastName } 现在我想从JSON中读取这个对象。 根据这篇文章,这是可能的 所以我写了下面的代码: String json = “{\”id\”:\”aaa\”,\”firstName\”:\”Danny\”,\”lastName\”:\”Lesnik\”}”; StudentThriftObject s = new StudentThriftObject(); byte[] jsonAsByte = json.getBytes(“UTF-8”); TMemoryBuffer memBuffer = new TMemoryBuffer(jsonAsByte.length); memBuffer.write(jsonAsByte); TProtocol proto = new TJSONProtocol(memBuffer); s.read(proto); 我得到的是以下exception: Exception in thread “main” org.apache.thrift.protocol.TProtocolException: Unexpected character:i at org.apache.thrift.protocol.TJSONProtocol.readJSONSyntaxChar(TJSONProtocol.java:322) at org.apache.thrift.protocol.TJSONProtocol.readJSONInteger(TJSONProtocol.java:698) at org.apache.thrift.protocol.TJSONProtocol.readFieldBegin(TJSONProtocol.java:837) […]

Thrift无法从json反序列化为java对象

我从以下thrift对象生成了一个java对象: struct Account { 1: required string accountType, 2: bool accountActive, } 我编写了一个java代码,试图将java对象序列化为json字符串,然后将json字符串反序列化为java对象。 我可以成功序列化但无法反序列化。 TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); TDeserializer deserializer = new TDeserializer(new TSimpleJSONProtocol.Factory()); Account a1 = new Account(); a1.setAccountType(“P”); a1.setAccountActive(true); String json = serializer.toString(a1); System.out.println(json); Account a2 = new Account(); deserializer.deserialize(a2, json, “UTF-8”); System.out.println(a2); System.out.println(a2.getAccountType()); 它不断抛出以下exception: Exception in thread “main” org.apache.thrift.protocol.TProtocolException: Required […]

可以从现有的java / scala接口和数据类型生成.thrift文件吗?

是否有一种简单的方法来获取现有的Java / scala数据类型和API接口并生成相应的.thrift文件? 让Thrift生成服务器数据结构是过度侵入的,因为它会产生后果: 我无法注释我的数据结构(例如,XML,JSON,hibernate持久性……) 此模式与其他想要拥有或需要修改源文件的序列化框架冲突。 结果,它看起来像thrift强制自己成为我的服务器的独有持久性格式 – 除非,我创建一个围绕Thrift的数据编组包装器或其他处理这些数据结构的持久性格式(hibernate, Jackson,scala BeanProperty,…)。 然而,这违背了自动化数据编组工具(如节俭)的目的,直接导致容易出错的世界,即必须保持相同但独立的接口和数据结构(=浪费有才华的工程师时间和能量)。 我对Thrift自动生成客户端代码感到非常满意。 但是,我(强烈)认为我需要自由编辑我的服务器在API中处理的数据结构。