Serializer Specification
"Serializer" refers to Graphif Serializer, which has a official implementation
@graphif/serializer.
This is an object serialization format based on JavaScript.
It has three core concepts: instance, other types, and reference.
Instance
Instance is a JavaScript object with prototype.
It stores the name of prototype in property _, and other properties are stored as key-value pairs.
{
"_": "ClassName",
"property1": "value1",
"property2": 42,
"property3": true
}Instance is nestable, meaning that properties can be other instances or other types.
{
"_": "ClassName",
"property1": {
"_": "OtherClass",
"otherProperty": "otherValue"
},
"property2": [1, 2, 3],
"property3": null
}Other Types
Other values will stored as is, including:
- Primitive types:
string,number,boolean,null,undefined - Array:
[value1, value2, ...] - Plain object (without prototype):
{ key1: value1, key2: value2, ... }
Reference
If there are same objects in the serialized data, implementations may store them as references to save space.
A reference is an object with property $, which value is a path string to the referred object, and implementations should replace with the referred object.
[
{
"_": "ClassName",
"property": "value",
"other": {
"value": 42
}
},
{ "$": "/0" },
{ "$": "/0/other" }
]Path String
Path string is a string that starts with /, followed by a series of keys or indices separated by /.