У меня есть следующие данные ProtoBuf в кодировке Base64 в качестве входных данных из Java приложения в файле, и я хочу прочитать их, используя Python:
message = "CTwwFl8AAAAAEAAY + LKJASAAKAEyvwYvY2dpLWJpbi90cmFjVud2 / /////// 8Bes0BTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBTTS1BMzA1R1QgQnVpbGQvUVAxQS4xOTA3MTEuMDIwOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgzLjAuNDEwMy4xMDYgTW9iaWxlIFNhZmFyaS81MzcuMzYgKE1vYmlsZTsgYWZtYS1zZGstYS12MjAyMDA2OTk5LjIwMTAwNDAwMC4xKYABAYgB4eathAKQAQKaAQCiATUyMjU5NzgxM2I0OTZlYjA5YTI3ZTA3ZmE2NDg1YjRmY2JjODJiZWQzNzQwMWZiNjUzNTc4N6oBIDQyYTBmZTY1Y2FlNTExZWE5N2Q1MGUyNjZiNjAyNmVksAEBuAH92Nj4BcABAsgBANABAdgBAeABjIoD6AHnePABgTz4AYLSB4ACmvoBiAIBkAL /////////// 8BmAL /////////// 8BoAL /////////// 8BqAIysALAArgCAcACCMgCAdACAtkCb / CFyVTBsD / gAgHoAgDwAgD4ApxOgQMAAAAA16OwP6gDALADALoDkwEoKDE5OTg5NDgmMTk5ODk0OSl8KDE5OTg5NTAmMTk5ODk1MSl8KDE5OTg5NTImMTk5ODk1Myl8KDE5OTg5NTQmMTk5ODk1NSl8KDE5OTg5NTYmMTk5ODk1Nyl 8KDE5OTg5NTgmMTk5ODk1OSl8KDE5OTg5NjAmMTk5ODk2MSkpJigxOTk4OTYyKSYoMTk5ODk2MynCAwkIoJF8FQAAgL / IAwDQAwHYA /////////////////////////////////////////////////////////////////////////////////////////////////////////// //// wGABAaIBP /////////// wGQBACYBACgBACoBAK4BJf2e7gEu4l8wQQAAAAAAAAAAMkEb / CFyVTBsD / SBAkKABIBMBoAIgDYBADgBADwBAP4BASABUGIBQGQBQCYBQOiBQUNAACAP6gFnAOwBawGuAUAwAUAygUCMTDQBQLaBQc0MTJ4ODEy4gUDQ1BN6QUAAAAAAADwP / EFAAAAANejsD / 5BV0471w4oww / gQYpXI / C9SisP4oGAJIGAJoGAKEGgcGrf3Gzsj + oBgSyBgC5BgAAAAAAAAAAyAZi2Ab /////////// 8B4Ab /////// //// 8B6AYA8Ab /////////// 8B + Ab /////////// 8BgAf /////////// 8BiAcBkAcAmAcAogcAqAcBsAcDugcMNDUuMTc3LjE5NC4wwAcAyAf /////// //// 8B0Af /////////// 8B2Af /////////// 8B4gcA6gcCLTE = "
Код:
import base64
import binascii
from google.protobuf.json_format import MessageToJson
from google.protobuf.message import Message
print(base64.b64decode(message))
// i was trying like below,but is not working
jsonObj = Message.ParseFromString(message)
print(jsonObj)
.proto файл
option java_package = "net.data.logprocessor.common.logformats.proto";
message UserSegmentInfoProto
{
optional int64 id = 1;
optional float weight = 2;
}
message ConversionInfo
{
optional string transactionId = 1;
optional string transactionAmount = 2;
optional string transactionInfo = 3;
}
message IoPricingInfo
{
optional float attributionRatio = 1;
}
message TrackerLogProto
{
optional sfixed64 timestamp = 1;
optional string uniqueResponseId = 2;
optional int64 eserverId = 3;
optional int64 trackerId = 4;
optional int64 creativeId = 5;
optional int64 advertiserLiId = 6;
optional int64 advertiserIoId = 7;
optional int64 advertiserId = 8;
optional int64 publisherLiId = 9;
optional int64 publisherIoId = 10;
optional int64 publisherId = 11;
optional int64 sectionId = 12;
optional int64 pixelId = 13;
optional int64 countryId = 14;
optional int64 regionId = 15;
optional int64 cityId = 16;
optional int64 creativeHeight = 17;
optional int64 creativeWidth = 18;
optional int64 bucketizedCreativeHeight = 19;
optional int64 bucketizedCreativeWidth = 20;
optional int64 creativeOfferType = 21;
optional int64 siteId = 22;
optional int64 channelId = 23;
optional int64 bucketizedAdvertiserLiFrequency = 24;
optional int64 trackingType = 25;
optional int64 isExchange = 26;
optional int64 impressions = 27;
optional int64 clickRequests = 28;
optional int64 clicks = 29;
optional int64 conversions = 30;
optional double moneySpent = 31;
optional double moneyEarned = 32;
optional string userCookie = 33;
optional string userIp = 34;
optional int64 isLearning = 35;
optional int64 statusCode = 36;
optional float lastResponseTime = 37;
optional string requestUri = 38;
optional string referrer = 39;
optional string userAgent = 40;
optional string uniqueRowId = 41;
optional double notionalBudgetSpent = 42;
optional int64 impressionClickValidationStatusCode = 43;
optional string advertiserTargetingExpression = 44;
optional string publisherTargetingExpression = 45;
repeated UserSegmentInfoProto userSegments = 46;
optional int64 conversionType = 47;
optional int64 creativeViewFrequency = 48;
optional int64 creativeClickFrequency = 49;
optional int64 advertiserIoViewFrequency = 50;
optional int64 advertiserIoClickFrequency = 51;
optional int64 timezone = 52;
repeated int64 impressionPiggybackPixelIds = 53;
optional int64 creativeViewFrequencyOld = 54;
optional int64 debugStatusCode = 55;
repeated int64 targetedSegmentIds = 56;
repeated int64 blockedSegmentIds = 57;
optional double revenue = 58;
optional double cost = 59;
optional double budgetSpent = 60;
optional ConversionInfo conversionInfo = 61;
optional int64 impressionTime = 62;
optional int64 clickTime = 63;
optional IoPricingInfo ioPricingInfo = 64;
}
Я пытался декодировать и читать сообщение, но получал непечатаемые данные. Как я могу прочитать данные? Я новичок в ProtoBuf. Кто-нибудь, пожалуйста, проведите меня сюда.