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 protobuf+unsubscr...@googlegroups.com.
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