JSON Import Labs
This example illustrated importing SysML v2 model from a JSON file by deserializing it.
The main function of interest is json.loads, which
takes a JSON array s and a document of class Document that the deserialized model will be stored in. The
json.loads function returns the deserialized model
which can then be used as if it was imported from a .sysml file.
Concepts Used
A
Modelis a SysMLv2 model represented using abstract syntax. This is the output of the functionload_model.The
syside.jsonmodule for serializing to SysML v2 JSON.walk_ownership_treeis a function that prints out elements in a model in a tree-like format. In this example it is used to show that the model has been successfully deserialized from JSON format.
Example Script
import pathlib
import syside
EXAMPLE_DIR = pathlib.Path(__file__).parent
MODEL_FILE_PATH = EXAMPLE_DIR / "example_model_3.sysml"
# The deserialized model will be stored in a document with MODEL_PATH path.
# The MODEL_PATH does not necessarily need to exist on the local file system.
MODEL_PATH = "file://" + str(MODEL_FILE_PATH)
def walk_ownership_tree(element: syside.Element, level: int = 0) -> None:
"""
Prints out all elements in a model in a tree-like format, where
child elements appear indented under their parent elements. For
example:
Parent
Child1
Child2
Grandchild
Args:
element: The model element to start printing from
level: How many levels to indent (increases for nested elements)
"""
if element.name is not None:
print(" " * level, element.name)
else:
print(" " * level, "anonymous element")
# Recursively call walk_ownership_tree() for each owned element
# (child element).
element.owned_elements.for_each(
lambda owned_element: walk_ownership_tree(owned_element, level + 1)
)
def main() -> None:
with open("example_json.json", "r") as f:
json_import = f.read()
deserialized_model, _ = syside.json.loads(json_import, MODEL_PATH)
walk_ownership_tree(deserialized_model.document.root_node)
if __name__ == "__main__":
main()
Output
anonymous element
JSON Export Example
Electrical
Mechanical
Automobile
Drive Train
Chassis
Download
Download this example here.