CSON (Concise Object Notation) is a data serialization format that is designed to be more concise than JSON (JavaScript Object Notation). CSON is a variation of JSON, which means that it shares some similarities with JSON but also has its own unique features and syntax.
One of the main differences between CSON and JSON is that CSON allows for the use of multiple separator characters between key-value pairs in an object or elements in an array. In JSON, only a comma can be used as a separator. In CSON, however, a semicolon, comma, pipe, tilde or forward slash can be used as a separator. However, it’s important to note that once a separator character has been chosen, it must be used consistently throughout the data.
Here’s a simple grammar that can be used for valide CSON serialization format:
cson = object | array
object = '{' pair (separator pair)* '}'
pair = key ':' value
key = string
value = string | number | object | array
array = '[' element (separator element)* ']'
element = value
string = [a-zA-Z0-9_]+
number = [0-9]+
separator = ',' | ';' | '|' | '~' | '/'
This grammar defines the basic structure of a CSON object or array. It specifies that an object is a collection of key-value pairs enclosed in curly brackets, and an array is a collection of elements enclosed in square brackets. The key in a key-value pair must be a string, and the value can be a string, number, object or array. The elements in an array can also be any of these types.
Here’s the simple grammar that allows semicolon, comma, pipe, tilde or forward slash as separators:
In this grammar, the separator
rule has been added to allow any of the specified characters to be used as separators between pairs in an object or elements in an array.
Here’s an example of a simple object in JSON format:
{
"name": "John Smith",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Springfield",
"state": "IL"
}
}
The same object can be represented in CSON format using a different separator character:
name:John Smith;age:30;address:{street:123 Main St;city:Springfield;state:IL}
In this example, semicolons are used as separators between the key-value pairs in both the top-level object and the nested address
object.
Another difference between CSON and JSON is that CSON allows for the omission of double quotes around keys and string values. This can make the data more concise. In the example above, the keys and string values are not enclosed in double quotes.
CSON’s focus is mainly on making the data as compact and concise as possible. This makes it fast to deliver and easy to convert into other data formats. As such, CSON does not support newlines or indentation for formatting.
In CSON, certain characters are reserved and must be escaped with a backslash if they appear within double quotes to prevent them from being interpreted as CSON syntax. These reserved characters include:
- The separator characters: semicolon (;), comma (,), pipe (|), tilde (~) and forward slash (/)
- The colon (:), which is used to separate keys from values in an object
- The curly brackets ({ and }), which are used to enclose objects
- The square brackets ([ and ]), which are used to enclose arrays
Overall, CSON provides a more concise way to represent structured data than JSON. It allows for multiple separator characters and the omission of double quotes around keys and string values. These features make CSON a powerful tool for representing data in a compact and efficient way.
Comments
Post a Comment