These v19 docs are archived 🔒.
Go to the
latest docs home
or try if
this exact page is available
in the latest docs.
JSON Value (Multilanguage) V1
JSON based entities are items which are stored as JSON. This is used in the history, in dynamic-entities in the DB and more.
Attributes/Properties have one or move values depending on how they are translated, so the Value is always an Dictionary (object of keys/values).
Example
This example is showing part of a JSON. Most of it has been removed to just focus on the values:
{
"_": {
"V": 1
},
"Entity": {
"//1": "Stuff skipped in this example",
"Attributes": {
"String": {
"Description": {
"*": "Retrieve full list of all zones"
},
"Name": {
"en-US": "Zones",
"de-DE": "Zonen"
},
},
"//2": "More stuff skipped for this example"
}
}
Value Format Explained
_
(header) mainly storing the version, in case we have to introduce a breaking change - see also format v1Entity
- this marks an entity - at the moment a json package should only have 1, but later it could contain moreAttributes
- the values of this entityString
- all the string values; optional, only exists if there are string values- [the field name]
- [the languages this value applies to]
- [the value]
- [more languages / values]
- [the languages this value applies to]
- [more fields / languages / values]
- [the field name]
- [next type] - all the boolean values; optional, only exists if there are boelean values
Language Codes
The keys of the dictionary determine what language is used and how.
- if the key is
*
then this value applies to all languages - if the key is a culture code like
en-us
(always lower case) it applies to that language - if the value is shared with multiple languages you'll see keys like
en-us,de-de
- if the value is shared but read-only in some languages the read-only-languages are prefixed with a
~
so you'll seeen-us,~de-de
This can of course extend over many languages, so keys like en-us,de-de,de-ch,~ar-ae
are valid.
Entity Relationship Fields
Note that entity-relationship fields cannot be multi-language, so it's always mapped to *
and contains an array of references:
{
"_": { "V": 1 },
"Entity": {
"//1": "Stuff skipped in this example",
"Attributes": {
"String": { "Name": { "en-us": "Street" } },
"Entity": {
"Calculations": { "*": [] },
"Errors": { "*": [] },
"Warnings": { "*": [] }
}
},
"//2": "More stuff skipped for this example"
}
}
Read also
History
- Added in 2sxc 9.4