当前位置: 首页 > 知识库问答 >
问题:

将POJO转换为协议缓冲区请求消息

宰宣
2023-03-14

而不是使用关系。关系GetRequest作为请求和响应。有什么方法可以将请求/响应转换为POJO?

我见过这个解决方案,但它比我想要的要复杂一些:将协议缓冲区转换为POJO

我正在使用翻新和谷歌协议缓冲区。

我所拥有的:

public interface RelationshipService {

    @POST("/relation/get")
    Observable<Relationships.RelationshipGetResponse> getRelationship(
            @Body() Relationship.RelationshipGetRequest request
    );
}

我想用的是:

public interface RelationshipService {

    @POST("/relation/get")
    Observable<Relationship> getRelationship(
            @Body() Relationship request
    );
}

关系:

public class Relationship {
    private long mRelationshipId;
    private String mName;
    // etc. about 10 other properties..
}

我的请求最终是这样的,请求必须在这里构建...

mClient.createService(RelationshipService.class).getRelationship(Relationships.RelationshipGetRequest.newBuilder().setRelationshipId(-1).build()).subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Subscriber<Relationships.RelationshipGetResponse>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {
                Timber.e(e, "Error! " + e.getMessage());
            }

            @Override
            public void onNext(Relationships.RelationshipGetResponse relationship) {

                String output = relationsip.getRelationship().getName();
                Timber.i(output);
            }
        });

共有1个答案

颜乐
2023-03-14

必须编写自己的适配器,才能将protobuff消息转换为POJO实例。否则,您可以尝试使用protostuff,将现有POJO用作模式。检查一下:https://github.com/anirbanroy88/services/tree/master/protostuff

 类似资料:
  • 是否有一个工具或库可以将PROBUFF对象映射到POJO。我想让pojo实现我无法使用PROBUFF对象实现的其他接口。或者我必须手动执行此转换?

  • 我有一个JSON对象,我正在将它转换成一个,并在这里进行一些处理。稍后,我想将相同的缓冲区数据转换为有效的JSON对象。 我的工作节点V6.9.1 下面是我尝试过的代码,但当我转换回JSON并且无法打开此对象时,我得到了。 所以我试着用检查的方式打印整个物体 如果我试着像数组一样读取它 我试图解析它也抛出SynTaxError:意外令牌o在JSON在位置2 我需要像我创建的那样将其视为真实对象(我

  • 在Python脚本中,,我使用协议缓冲区使用以下方法来建模数据: 在. proto文件中定义消息格式。 使用协议缓冲区编译器。 使用Python协议缓冲区API在. py模块中写入和读取消息。 我想在appengine上实现Cloud Endpoints框架,该框架导入,并使用前面提到的Python脚本,但是Cloud Endpoints使用ProtoRPC,而不是“标准”协议缓冲区。 我的App

  • 我有一个二进制数据缓冲区,我想存储在协议缓冲区中。 在留档(https://developers.google.com/protocol-buffers/docs/proto#scalar)中,它说类型等价于C中的。我无法相信这一点,所以我不得不尝试它,是的,这似乎是这样... 本协议: 给出一个包含以下内容的消息定义: 公共setter/getter API如下所示: 当然,这不是在消息中存储二

  • 在协议缓冲区(.proto)中表示这一点的最佳方式是什么? 其中,字段属性只能接受以下内容,

  • 试图使用Ionic 4中的协议缓冲区进行编码 我已经下载了协议并用它来生成一堆_pb.js文件,每个. proto文件一个。很好。 首先关注原型示例。这是示例代码: 我做了一些更改以匹配我的文件。更改proto文件的名称。但是我的proto文件中没有包名称。所以我只是使用了消息名称。首先这是我的. proto文件的开头: 下面是我修改后的代码: 这似乎不起作用。我的控制台显示: 我相信我已经成功地