将 POJO 转换为 Protocol Buffer 请求消息

Converting POJO to protocol buffer request message

而不是使用 Relationship.RelationshipGetRequest 作为请求和响应。有没有办法将 request/response 转换为 POJO?

我看过这个解决方案,但它比我正在寻找的要复杂一些: Converting a Protocol Buffer to a POJO

我正在使用 Retrofit 和 Google 协议缓冲区。

我有:

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);
            }
        });

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