JSON Export Labs
This example illustrates exporting the root namespace loaded from a file to the SysML v2
JSON serialization format. The main function of interest is json.dumps, which takes an Element and generates a
string representation of a SysML v2 JSON serialization. The serialization includes the
element and (recursively) all its owned members. Typically, as in this example, you
would serialize the root namespace of a loaded document.
Example Model
package 'JSON Export Example' {
part def Electrical;
part def Mechanical;
part Automobile {
part 'Drive Train' : Electrical;
part Chassis : Mechanical;
}
}
Example Script
import pathlib
import syside
EXAMPLE_DIR = pathlib.Path(__file__).parent
MODEL_FILE_PATH = EXAMPLE_DIR / "example_model.sysml"
def main() -> None:
(model, diagnostics) = syside.try_load_model([MODEL_FILE_PATH])
# Only errors cause an exception. Syside may also report warnings and
# informational messages, but not for this example.
assert not diagnostics.contains_errors(warnings_as_errors=True)
# Export the model to JSON
assert len(model.user_docs) == 1
with model.user_docs[0].lock() as locked:
print(
syside.json.dumps(
locked.root_node, syside.SerializationOptions.minimal()
)
)
if __name__ == "__main__":
main()
Output
[
{
"@type": "Namespace",
"@id": "152f4f90-24ad-43f0-9fc0-c58eccf681c5",
"elementId": "152f4f90-24ad-43f0-9fc0-c58eccf681c5",
"ownedRelationship": [
{ "@id": "0a680cbf-b149-5715-8acd-2ce5ab495768" }
]
},
{
"@type": "OwningMembership",
"@id": "0a680cbf-b149-5715-8acd-2ce5ab495768",
"elementId": "0a680cbf-b149-5715-8acd-2ce5ab495768",
"owningRelatedElement": { "@id": "152f4f90-24ad-43f0-9fc0-c58eccf681c5" },
"memberElement": { "@id": "f20f3ad6-71e5-580d-bef8-22f8b3084bae" },
"memberName": "JSON Export Example",
"ownedRelatedElement": [
{ "@id": "f20f3ad6-71e5-580d-bef8-22f8b3084bae" }
]
},
{
"@type": "Package",
"@id": "f20f3ad6-71e5-580d-bef8-22f8b3084bae",
"elementId": "f20f3ad6-71e5-580d-bef8-22f8b3084bae",
"declaredName": "JSON Export Example",
"owningRelationship": { "@id": "0a680cbf-b149-5715-8acd-2ce5ab495768" },
"ownedRelationship": [
{ "@id": "61bdbd4a-dc8e-59e5-85ae-2d0a35ecf30b" },
{ "@id": "bd235a9c-2698-5574-9a01-d972c7ee778a" },
{ "@id": "f43d85c4-3605-57a8-bf7a-2421596cf4b4" }
]
},
{
"@type": "OwningMembership",
"@id": "61bdbd4a-dc8e-59e5-85ae-2d0a35ecf30b",
"elementId": "61bdbd4a-dc8e-59e5-85ae-2d0a35ecf30b",
"owningRelatedElement": { "@id": "f20f3ad6-71e5-580d-bef8-22f8b3084bae" },
"memberElement": { "@id": "59009c6d-ed8e-5e5f-95c4-2d91f3730a15" },
"memberName": "Electrical",
"ownedRelatedElement": [
{ "@id": "59009c6d-ed8e-5e5f-95c4-2d91f3730a15" }
]
},
{
"@type": "PartDefinition",
"@id": "59009c6d-ed8e-5e5f-95c4-2d91f3730a15",
"elementId": "59009c6d-ed8e-5e5f-95c4-2d91f3730a15",
"declaredName": "Electrical",
"owningRelationship": { "@id": "61bdbd4a-dc8e-59e5-85ae-2d0a35ecf30b" },
"isVariation": false
},
{
"@type": "OwningMembership",
"@id": "bd235a9c-2698-5574-9a01-d972c7ee778a",
"elementId": "bd235a9c-2698-5574-9a01-d972c7ee778a",
"owningRelatedElement": { "@id": "f20f3ad6-71e5-580d-bef8-22f8b3084bae" },
"memberElement": { "@id": "787ad28e-fbef-50ca-af0c-bef7f6ac65eb" },
"memberName": "Mechanical",
"ownedRelatedElement": [
{ "@id": "787ad28e-fbef-50ca-af0c-bef7f6ac65eb" }
]
},
{
"@type": "PartDefinition",
"@id": "787ad28e-fbef-50ca-af0c-bef7f6ac65eb",
"elementId": "787ad28e-fbef-50ca-af0c-bef7f6ac65eb",
"declaredName": "Mechanical",
"owningRelationship": { "@id": "bd235a9c-2698-5574-9a01-d972c7ee778a" },
"isVariation": false
},
{
"@type": "OwningMembership",
"@id": "f43d85c4-3605-57a8-bf7a-2421596cf4b4",
"elementId": "f43d85c4-3605-57a8-bf7a-2421596cf4b4",
"owningRelatedElement": { "@id": "f20f3ad6-71e5-580d-bef8-22f8b3084bae" },
"memberElement": { "@id": "bac7b912-5575-5f6a-9df6-cced858dcda1" },
"memberName": "Automobile",
"ownedRelatedElement": [
{ "@id": "bac7b912-5575-5f6a-9df6-cced858dcda1" }
]
},
{
"@type": "PartUsage",
"@id": "bac7b912-5575-5f6a-9df6-cced858dcda1",
"elementId": "bac7b912-5575-5f6a-9df6-cced858dcda1",
"declaredName": "Automobile",
"owningRelationship": { "@id": "f43d85c4-3605-57a8-bf7a-2421596cf4b4" },
"isVariation": false,
"ownedRelationship": [
{ "@id": "76080b80-74de-5f5f-be1c-8cb46b523f8d" },
{ "@id": "0d015b91-eaf5-51fe-9a8e-7becc647bd0b" }
]
},
{
"@type": "FeatureMembership",
"@id": "76080b80-74de-5f5f-be1c-8cb46b523f8d",
"elementId": "76080b80-74de-5f5f-be1c-8cb46b523f8d",
"owningRelatedElement": { "@id": "bac7b912-5575-5f6a-9df6-cced858dcda1" },
"memberElement": { "@id": "46f32266-d488-50d1-abe0-988d5245f25d" },
"memberName": "Drive Train",
"ownedRelatedElement": [
{ "@id": "46f32266-d488-50d1-abe0-988d5245f25d" }
]
},
{
"@type": "PartUsage",
"@id": "46f32266-d488-50d1-abe0-988d5245f25d",
"elementId": "46f32266-d488-50d1-abe0-988d5245f25d",
"declaredName": "Drive Train",
"owningRelationship": { "@id": "76080b80-74de-5f5f-be1c-8cb46b523f8d" },
"isComposite": true,
"isVariable": true,
"isVariation": false,
"ownedRelationship": [
{ "@id": "5d629737-2332-44c8-8d7f-eab312b83b19" }
]
},
{
"@type": "FeatureTyping",
"@id": "5d629737-2332-44c8-8d7f-eab312b83b19",
"elementId": "5d629737-2332-44c8-8d7f-eab312b83b19",
"owningRelatedElement": { "@id": "46f32266-d488-50d1-abe0-988d5245f25d" },
"general": { "@id": "59009c6d-ed8e-5e5f-95c4-2d91f3730a15" },
"specific": { "@id": "46f32266-d488-50d1-abe0-988d5245f25d" },
"type": { "@id": "59009c6d-ed8e-5e5f-95c4-2d91f3730a15" },
"typedFeature": { "@id": "46f32266-d488-50d1-abe0-988d5245f25d" }
},
{
"@type": "FeatureMembership",
"@id": "0d015b91-eaf5-51fe-9a8e-7becc647bd0b",
"elementId": "0d015b91-eaf5-51fe-9a8e-7becc647bd0b",
"owningRelatedElement": { "@id": "bac7b912-5575-5f6a-9df6-cced858dcda1" },
"memberElement": { "@id": "ae75c320-492a-509b-86f3-f983173d050d" },
"memberName": "Chassis",
"ownedRelatedElement": [
{ "@id": "ae75c320-492a-509b-86f3-f983173d050d" }
]
},
{
"@type": "PartUsage",
"@id": "ae75c320-492a-509b-86f3-f983173d050d",
"elementId": "ae75c320-492a-509b-86f3-f983173d050d",
"declaredName": "Chassis",
"owningRelationship": { "@id": "0d015b91-eaf5-51fe-9a8e-7becc647bd0b" },
"isComposite": true,
"isVariable": true,
"isVariation": false,
"ownedRelationship": [
{ "@id": "b436fe52-ee79-437f-877c-0a186e39b925" }
]
},
{
"@type": "FeatureTyping",
"@id": "b436fe52-ee79-437f-877c-0a186e39b925",
"elementId": "b436fe52-ee79-437f-877c-0a186e39b925",
"owningRelatedElement": { "@id": "ae75c320-492a-509b-86f3-f983173d050d" },
"general": { "@id": "787ad28e-fbef-50ca-af0c-bef7f6ac65eb" },
"specific": { "@id": "ae75c320-492a-509b-86f3-f983173d050d" },
"type": { "@id": "787ad28e-fbef-50ca-af0c-bef7f6ac65eb" },
"typedFeature": { "@id": "ae75c320-492a-509b-86f3-f983173d050d" }
}
]
Download
Download this example here.