如何反序列化protobuf网中的Android

问题描述 投票:0回答:1

我有一个使用protobuf网对其序列化的WebAPI。它工作正常。

现在,我需要使用Web API中我的Android应用程序。我的问题是,如何使用反序列化的Android的?或者,它是不可能的,我必须在我的Web应用程序使用Google.ProtoBuf?

我真的很喜欢protobuf网,所以,如果我可以,我会喜欢使用protobuf网保留。我只需要找到走反序列化它的Android。请点我到正确的方向。

谢谢...

更新:

这里是从响应得到提琴手时

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/x-protobuf
Expires: -1
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RDpcWENJRllcRG90TkVUXFVCcm9kXFVXZWJBUElcVVdlYkFQSVxhcGlcZGV2aWNlXEdldEdyb3Vwcw==?=
X-Powered-By: ASP.NET
Date: Wed, 06 Feb 2019 07:36:52 GMT
Content-Length: 76


"   XzFood          !        
&   XzClothing          !        

这里是我的模型

private int id = 0;
[ProtoMember(11)]
public int Id
{
    get { return id; }
    set { id = value; }
}

private string name = string.Empty;
[ProtoMember(15)]
public string Name
{
    get { return name; }
    set { name = value; }
}

private List<CDProduct> products = new List<CDProduct>();
[ProtoMember(45)]
public List<CDProduct> Products
{
    get { return products; }
    set { products = value; }
}
java android protobuf-net
1个回答
1
投票

你提到的Android和你提到的Java。如果你在Java的Android上的编码,那么你的确将无法使用protobuf网,因为这是.NET的具体 - 但protobuf网试图让您轻松过渡。在现有的代码,你可以使用:

var proto = Serializer.GetProto<YourRootType>();

它会给你一个代表.proto的模型YourRootType模式(也有对“proto2”与“proto3”等选项)。它通常工作正常,但如果你有喜欢的东西和DateTime不使用DataFormat.WellKnown选项,那么它可以得到一个有点尴尬(提示:如果可能的话,切换到任何DataFormat.WellKnown / DateTime属性TimeStamp选项,但请注意,这样做所以是一个重大更改,这将使用由谷歌在“proto3”时间表添加google.protobuf.Timestampgoogle.protobuf.Duration布局)。

然后,通过protoc运行.proto模式,你应该得到可用的Java代码相同的模型。

注意:如果你想调整它随意更改产生.proto架构的名称;名字没有关系 - 场的数量和类型,但是:做的。

© www.soinside.com 2019 - 2024. All rights reserved.