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



不使用关系。作为请求和响应的RelationshipGetRequest。是否有任何方法将请求/响应转换为POJO?

我已经看到了这个解决方案,但它比我正在寻找的更复杂:将协议缓冲区转换为POJO

我正在使用Retrofit和Google Protocol Buffers。

What I have:

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作为模式的原型。检查:https://github.com/anirbanroy88/services/tree/master/protostuff

最新更新