python 3.7
proto 2
openrtb 2.5

在 2019年10月28日星期一 UTC+8下午2:53:18,schopenhauer zhang写道:
>
>
>
> proto file :
> syntax = "proto2";
> option java_outer_classname = "OpenRtb";
> package com.google.openrtb;
> message Person {
> required string name = 1;
> required int32 id = 2;
> repeated Phone number = 3;
> }
> message Phone{
>     required string id = 5;
>
> }
>
> person_pb2.py:
>
> # -*- coding: utf-8 -*-
> # Generated by the protocol buffer compiler.  DO NOT EDIT!
> # source: person.proto
>
> import sys
> _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
> from google.protobuf import descriptor as _descriptor
> from google.protobuf import message as _message
> from google.protobuf import reflection as _reflection
> from google.protobuf import symbol_database as _symbol_database
> # @@protoc_insertion_point(imports)
>
> _sym_db = _symbol_database.Default()
>
>
>
>
> DESCRIPTOR = _descriptor.FileDescriptor(
>   name='person.proto',
>   package='com.google.openrtb',
>   syntax='proto2',
>   serialized_options=_b('B\007OpenRtb'),
>   
> serialized_pb=_b('\n\x0cperson.proto\x12\x12\x63om.google.openrtb\"M\n\x06Person\x12\x0c\n\x04name\x18\x01
>  \x02(\t\x12\n\n\x02id\x18\x02 \x02(\x05\x12)\n\x06number\x18\x03 
> \x03(\x0b\x32\x19.com.google.openrtb.Phone\"\x13\n\x05Phone\x12\n\n\x02id\x18\x05
>  \x02(\tB\tB\x07OpenRtb')
> )
>
>
>
>
> _PERSON = _descriptor.Descriptor(
>   name='Person',
>   full_name='com.google.openrtb.Person',
>   filename=None,
>   file=DESCRIPTOR,
>   containing_type=None,
>   fields=[
>     _descriptor.FieldDescriptor(
>       name='name', full_name='com.google.openrtb.Person.name', index=0,
>       number=1, type=9, cpp_type=9, label=2,
>       has_default_value=False, default_value=_b("").decode('utf-8'),
>       message_type=None, enum_type=None, containing_type=None,
>       is_extension=False, extension_scope=None,
>       serialized_options=None, file=DESCRIPTOR),
>     _descriptor.FieldDescriptor(
>       name='id', full_name='com.google.openrtb.Person.id', index=1,
>       number=2, type=5, cpp_type=1, label=2,
>       has_default_value=False, default_value=0,
>       message_type=None, enum_type=None, containing_type=None,
>       is_extension=False, extension_scope=None,
>       serialized_options=None, file=DESCRIPTOR),
>     _descriptor.FieldDescriptor(
>       name='number', full_name='com.google.openrtb.Person.number', index=2,
>       number=3, type=11, cpp_type=10, label=3,
>       has_default_value=False, default_value=[],
>       message_type=None, enum_type=None, containing_type=None,
>       is_extension=False, extension_scope=None,
>       serialized_options=None, file=DESCRIPTOR),
>   ],
>   extensions=[
>   ],
>   nested_types=[],
>   enum_types=[
>   ],
>   serialized_options=None,
>   is_extendable=False,
>   syntax='proto2',
>   extension_ranges=[],
>   oneofs=[
>   ],
>   serialized_start=36,
>   serialized_end=113,
> )
>
>
> _PHONE = _descriptor.Descriptor(
>   name='Phone',
>   full_name='com.google.openrtb.Phone',
>   filename=None,
>   file=DESCRIPTOR,
>   containing_type=None,
>   fields=[
>     _descriptor.FieldDescriptor(
>       name='id', full_name='com.google.openrtb.Phone.id', index=0,
>       number=5, type=9, cpp_type=9, label=2,
>       has_default_value=False, default_value=_b("").decode('utf-8'),
>       message_type=None, enum_type=None, containing_type=None,
>       is_extension=False, extension_scope=None,
>       serialized_options=None, file=DESCRIPTOR),
>   ],
>   extensions=[
>   ],
>   nested_types=[],
>   enum_types=[
>   ],
>   serialized_options=None,
>   is_extendable=False,
>   syntax='proto2',
>   extension_ranges=[],
>   oneofs=[
>   ],
>   serialized_start=115,
>   serialized_end=134,
> )
>
> _PERSON.fields_by_name['number'].message_type = _PHONE
> DESCRIPTOR.message_types_by_name['Person'] = _PERSON
> DESCRIPTOR.message_types_by_name['Phone'] = _PHONE
> _sym_db.RegisterFileDescriptor(DESCRIPTOR)
>
> Person = _reflection.GeneratedProtocolMessageType('Person', 
> (_message.Message,), dict(
>   DESCRIPTOR = _PERSON,
>   __module__ = 'person_pb2'
>   # @@protoc_insertion_point(class_scope:com.google.openrtb.Person)
>   ))
> _sym_db.RegisterMessage(Person)
>
> Phone = _reflection.GeneratedProtocolMessageType('Phone', 
> (_message.Message,), dict(
>   DESCRIPTOR = _PHONE,
>   __module__ = 'person_pb2'
>   # @@protoc_insertion_point(class_scope:com.google.openrtb.Phone)
>   ))
> _sym_db.RegisterMessage(Phone)
>
>
> DESCRIPTOR._options = None
> # @@protoc_insertion_point(module_scope)
>
>
>
>
>
> python code:
>
> bidResponse = person_pb2.Person()
> bidResponse.name = "<iframe  
> src=\"%%%%CLICK_URL_UNESC%%%%https://play.google.com\";></iframe>""
>
> bidResponse.id = 123
> bid_resp_bid = bidResponse.number.add()
> bid_resp_bid.id = 'zhehsi'
> p1 = bidResponse.SerializeToString()
> print(p1)
> ## the result(binary data) like this :
> b'\nG<iframe  
> src="%%%%CLICK_URL_UNESC%%%%https://play.google.com";></iframe>\x10\xc0\xc4\x07\x1a\x08*\x06zhehsi'
>
>
> bid_esponse = person_pb2.Person()
> bid_esponse.ParseFromString(p1)
> p2 = json_format.MessageToDict(bid_esponse)
> ## parse the result(binary data) get:
> {'name': '<iframe  
> src="%%%%CLICK_URL_UNESC%%%%https://play.google.com";></iframe>', 'id': 
> 123456, 'number': [{'id': 'zhehsi'}]}
>
>
>
> as you see ,string" <iframe  
> src=\"%%%%CLICK_URL_UNESC%%%%https://play.google.com";></iframe>" is not be 
> Serialized to   binary .
> It is not changed.But I parse it ,it is right . However google support team 
> said i am wrong.the "iframe tag" must be Serialized to   binary,if 
> not they can not parse it. I do not know where i wrong.Can you check my code 
> where is wrong? or can you   
>  Serialize the string("<iframe  
> src="%%%%CLICK_URL_UNESC%%%%https://play.google.com";></iframe>") to binary 
> data?
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/7a91b271-c275-4d47-be7d-8d5f1bc4ffd7%40googlegroups.com.

Reply via email to