openrvdas.logger.transforms.from_json_transform
No module-level documentation available.
1#!/usr/bin/env python3 2 3import json 4import logging 5from typing import Union 6 7from logger.utils.das_record import DASRecord # noqa: E402 8from logger.transforms.transform import Transform # noqa: E402 9 10 11################################################################################ 12# 13class FromJSONTransform(Transform): 14 """Convert passed JSON to either a DASRecord or a dict. 15 """ 16 17 def __init__(self, das_record=False, **kwargs): 18 """Parse the received JSON and convert to appropriate data 19 structure. If das_record == True, assume we've been passed a dict 20 of field:value pairs, and try to embed them into a DASRecord. 21 """ 22 super().__init__(**kwargs) # processes 'quiet' and type hints 23 self.das_record = das_record 24 25 ############################ 26 def transform(self, record: str) -> Union[dict, DASRecord]: 27 """Parse JSON record to Python data struct or DASRecord.""" 28 29 # See if it's something we can process, and if not, try digesting 30 if not self.can_process_record(record): # inherited from BaseModule() 31 return self.digest_record(record) # inherited from BaseModule() 32 33 try: 34 data = json.loads(record) 35 except json.decoder.JSONDecodeError: 36 logging.warning('Failed to parse JSON string: "%s"', record) 37 return None 38 39 if not self.das_record: 40 return data 41 42 if not type(data) is dict: 43 logging.warning('FromJSON asked to create DASRecord from non-dict ' 44 'data: "%s"', type(data)) 45 return None 46 47 return DASRecord(fields=data)
class
FromJSONTransform(logger.transforms.transform.Transform):
14class FromJSONTransform(Transform): 15 """Convert passed JSON to either a DASRecord or a dict. 16 """ 17 18 def __init__(self, das_record=False, **kwargs): 19 """Parse the received JSON and convert to appropriate data 20 structure. If das_record == True, assume we've been passed a dict 21 of field:value pairs, and try to embed them into a DASRecord. 22 """ 23 super().__init__(**kwargs) # processes 'quiet' and type hints 24 self.das_record = das_record 25 26 ############################ 27 def transform(self, record: str) -> Union[dict, DASRecord]: 28 """Parse JSON record to Python data struct or DASRecord.""" 29 30 # See if it's something we can process, and if not, try digesting 31 if not self.can_process_record(record): # inherited from BaseModule() 32 return self.digest_record(record) # inherited from BaseModule() 33 34 try: 35 data = json.loads(record) 36 except json.decoder.JSONDecodeError: 37 logging.warning('Failed to parse JSON string: "%s"', record) 38 return None 39 40 if not self.das_record: 41 return data 42 43 if not type(data) is dict: 44 logging.warning('FromJSON asked to create DASRecord from non-dict ' 45 'data: "%s"', type(data)) 46 return None 47 48 return DASRecord(fields=data)
Convert passed JSON to either a DASRecord or a dict.
FromJSONTransform(das_record=False, **kwargs)
18 def __init__(self, das_record=False, **kwargs): 19 """Parse the received JSON and convert to appropriate data 20 structure. If das_record == True, assume we've been passed a dict 21 of field:value pairs, and try to embed them into a DASRecord. 22 """ 23 super().__init__(**kwargs) # processes 'quiet' and type hints 24 self.das_record = das_record
Parse the received JSON and convert to appropriate data structure. If das_record == True, assume we've been passed a dict of field:value pairs, and try to embed them into a DASRecord.
def
transform(self, record: str) -> Union[dict, logger.utils.das_record.DASRecord]:
27 def transform(self, record: str) -> Union[dict, DASRecord]: 28 """Parse JSON record to Python data struct or DASRecord.""" 29 30 # See if it's something we can process, and if not, try digesting 31 if not self.can_process_record(record): # inherited from BaseModule() 32 return self.digest_record(record) # inherited from BaseModule() 33 34 try: 35 data = json.loads(record) 36 except json.decoder.JSONDecodeError: 37 logging.warning('Failed to parse JSON string: "%s"', record) 38 return None 39 40 if not self.das_record: 41 return data 42 43 if not type(data) is dict: 44 logging.warning('FromJSON asked to create DASRecord from non-dict ' 45 'data: "%s"', type(data)) 46 return None 47 48 return DASRecord(fields=data)
Parse JSON record to Python data struct or DASRecord.