from telemetry.protobuf import * from google.protobuf import json_format import json def obj2dict(obj, clazz): if isinstance(obj, list): for i in range(len(obj)): obj[i] = obj2dict(obj[i], clazz) elif isinstance(obj, clazz): obj = obj.__dict__ for k in iter(obj): obj[k] = obj2dict(obj[k], clazz) return obj def json2pb(jsonStringResponse): """将jsonStringResponse转化为pbString返回""" pbStringResponse = json_format.Parse( json.dumps(jsonStringResponse), data_pb2.Telemetry() ) return pbStringResponse def type_check(obj, expeced_type): if isinstance(obj, expeced_type): pass else: raise Exception( "Type doesn't match, expect type{} but receive type{}".format( expeced_type, type(obj) ) ) def is_iterable(obj): try: obj.__iter__ return True except AttributeError: return False def trans2list(obj): if not isinstance(obj, list) and is_iterable(obj): obj = list(obj) return obj