Я перебираю словарь объектов, созданных из JSON, и создаю из них вершины, используя networkx.Проблема, с которой я сталкиваюсь, заключается в том, что у некоторых объектов JSON отсутствуют свойства, и если я сделаю это:
self.graph.add_node(valueToCheck,
id=self.vertexDict[valueToCheck],
namespace=component["namespace"],
tenant=component["tenant"],
type=component.get("type")+"Component",
artifactFileName=component.get("artifactFileName"),
className=component.get("className"),
userConfig=component.get("userConfig"),
sourceType=component.get("sourceType"),
sinkType=component.get("sinkType"))
, то я не смогу экспортировать свой график, используя nx.write_graphml(..)
, поскольку некоторые свойства вершинимеют значение None
(которое является ожидаемым выходным значением component.get(..)
, когда свойство отсутствует).
Как использовать networkx для построения вершин, когда некоторые из моих свойств могут отсутствовать в объектах JSON?
Вот как выглядит мой JSON:
[{'type': 'function',
'namespace': 'campaigns',
'name': 'campaign-record-transformer',
'tenant': 'osp',
'artifactFileName': 'osp-functions-1.1-SNAPSHOT-jar-with-dependencies.jar',
'className': 'com.overstock.dataeng.pulsar.functions.CampaignRecordTransformer',
'inputs': ['persistent://osp/campaigns/campaign-manager'],
'logTopic': 'persistent://osp/logging/pulsar-log-topic',
'output': 'persistent://osp/campaigns/campaign-records'},
{'type': 'function',
'namespace': 'campaignsTest',
'name': 'campaign-metadata-transformer',
'tenant': 'osp',
'artifactFileName': 'osp-functions-1.1-SNAPSHOT-jar-with-dependencies.jar',
'className': 'com.overstock.dataeng.pulsar.functions.CampaignMetadataTransformer',
'logTopic': 'persistent://osp/logging/pulsar-log-topic',
'output': 'persistent://osp/campaigns/campaign-metadata-output'}]
Обратите внимание, что свойство inputs
отсутствует во втором объекте.В реальных данных есть как минимум 8 необязательных свойств, которые могут отсутствовать в разных комбинациях, и есть сотни таких объектов.