SchemaStudio can read existing schemas and data files so you don't have to rebuild from scratch, and it can export your work in the formats your toolchain expects.
.json schema file and click Open..xsd file and click Open.You can import a JSON or XML data file to pre-populate Data Entry Mode records. This is useful when you already have data files and want to use SchemaStudio for further editing or to generate a schema from the data's shape.
.json schema file.
Helper structures referenced from the main structure are inlined in the output under
$defs and referenced with $ref. Alternatively, enable
Flatten all references in the export dialog to inline them directly at
the point of use.
The example below shows a condensed excerpt from a real JSON Schema export — a game level database with three top-level modes, each containing a structured level object.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"unevaluatedProperties": false,
"properties": {
"story_mode": {
"title": "Story Mode",
"description": "The collection of levels for the story mode.",
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"title": "In game level name",
"description": "The level name used in the game as an identifier.",
"type": "string"
},
"properties": {
"title": "Level Properties",
"description": "The various properties needed to build the level.",
"type": "object",
"required": ["title", "element_group", "width", "height", "max_score", "piece_value", "counter_value", "bonus_runs"],
"properties": {
"title": {
"title": "Level Display Title",
"description": "The title of the level that is displayed in game.",
"default": "[Level Title]",
"type": "string"
},
"width": {
"title": "Board Width",
"description": "The number of columns displayed in the game for the level",
"type": "integer",
"minimum": 6,
"maximum": 9,
"multipleOf": 1,
"default": 6
},
"height": {
"title": "Board Height",
"description": "The number of rows displayed in the game for the level",
"type": "integer",
"minimum": 6,
"maximum": 10,
"multipleOf": 1,
"default": 6
},
"is_moves": {
"title": "Level Counts Moves",
"description": "Set to true if this level counts moves before it ends, or false if it is time based.",
"type": "boolean"
},
"goal_options": {
"title": "Level Goals To Complete",
"description": "The lists of goals the player needs to complete in order to finish the level.",
"type": "array",
"items": {
"type": "object",
"properties": {
"goal_type": {
"title": "Game Piece to Collect",
"description": "The in game identifier for the piece that must be destroyed to complete the level.",
"type": "string",
"examples": ["HYDROGEN", "CARBON"]
},
"max_value": {
"title": "Goal Count",
"description": "The minimum required pieces to destroy in order to complete the game.",
"type": "integer",
"exclusiveMinimum": 0,
"multipleOf": 1
}
}
}
},
"empty_spaces": {
"title": "Coordinates of Empty Spaces",
"type": "array",
"items": {
"type": "object",
"properties": {
"x": { "title": "X Coordinate", "type": "integer", "minimum": 0, "exclusiveMaximum": 9, "multipleOf": 1 },
"y": { "title": "Y Coordinate", "type": "integer", "minimum": 0, "exclusiveMaximum": 10, "multipleOf": 1 }
}
}
}
}
}
}
}
},
"casual_mode": { "title": "Casual Mode", "description": "...", "type": "array" },
"challenge_mode": { "title": "Challenge Level", "description": "...", "type": "object" }
}
}
.xsd file with the structure as the root element type.If you want to export only certain records, use Filter Fields to narrow the visible records before exporting. The export dialog offers an option to export only the currently filtered records or all records.
Project files (.ssproj) are the primary save format and are not intended for use
outside of SchemaStudio. They bundle the schema, data records, and changelog into a single
package file. To share your schema or data with other tools, use one of the export formats above.