VOOZH about

URL: https://en.wikipedia.org/wiki/Ion_(serialization_format)

โ‡ฑ Ion (serialization format) - Wikipedia


Jump to content
From Wikipedia, the free encyclopedia
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
The topic of this article may not meet Wikipedia's general notability guideline. Please help to demonstrate the notability of the topic by citing reliable secondary sources that are independent of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to be merged, redirected, or deleted.
Find sources: "Ion" serialization format โ€“ news ยท newspapers ยท books ยท scholar ยท JSTOR
(July 2017) (Learn how and when to remove this message)
This article's use of external links may not follow Wikipedia's policies or guidelines. Please improve this article by removing excessive or inappropriate external links, and converting useful links where appropriate into footnote references. (August 2024) (Learn how and when to remove this message)
(Learn how and when to remove this message)
Ion
Filename extension
.ion
Internet media typeapplication/ion
Developed byAmazon
Type of formatData interchange
Websiteamzn.github.io/ion-docs/

Ion is a data serialization language developed by Amazon. It may be represented by either a human-readable text form or a compact binary form. The text form is a superset of JSON; thus, any valid JSON document is also a valid Ion document.

Data types

[edit]

As a superset of JSON, Ion includes the following data types

  • null: An empty value (for JSON compatibility)
  • bool: Boolean values
  • string: Unicode text literals
  • list: Ordered heterogeneous collection of Ion values (extension of JSON array)
  • struct: Unordered collection of key/value pairs (extension of JSON object)

The nebulous JSON 'number' type is strictly defined in Ion to be one of

  • int: Signed integers of arbitrary size
  • float: 64-bit IEEE binary-encoded floating point numbers
  • decimal: Decimal-encoded real numbers of arbitrary precision

Ion adds these types:

  • timestamp: Date/time/time zone moments of arbitrary precision
  • symbol: Unicode symbolic atoms (aka identifiers), stored as interned strings in binary format
  • blob: Binary data of user-defined encoding
  • clob: Text data of user-defined encoding
  • sexp: Nested list of values (equivalent to an S-expression) with application-defined semantics

Each Ion type supports a null variant, indicating a lack of value while maintaining a strict type (e.g., null.int, null.struct).

The Ion format permits attaching one or more annotations (i.e. a list of symbols) to any value. Such annotations may be used as metadata for otherwise opaque data (such as a blob).

Implementations

[edit]

Examples

[edit]

Sample document

[edit]

Features seen in JavaScript and JSON5:

// Comments are allowed using the double forward slash 
{
key:"value",// key here is a symbol, it can also be a string as in JSON
nums:1_000_000,// equivalent to 1000000, use of underscores with numbers is more readable
"A float":31415e-4,// key is a value that contains spaces 
}

Features unique to Ion:

{
symbol:'a symbol',// symbols are interned Unicode strings
"A null integer":null.int,
annotated:age::35,// the symbol "age" is attached to the value "35" as an annotation
lists:'hw grades'::[80,85,90],// any symbol can be used as an annotation 
many_annot:I::have::many::annotations::true,// annotations are not nested, but rather, a list of annotations
sexp:(this(isa[valid]"Ion")last::value+42)// Ion S-expressions. 'this', 'is', 'a', 'valid', 'value', and '+' are symbols.
_value:{{OiBTIKUgTyAASb8=}},// blob value is represented as base64
_value:{{"a b\0\xff"}}// clob value is represented as an ASCII string with C-style escapes
// ^ repeated names (keys) are allowed but generate a warning for undefined behavior 
}

Uses

[edit]
  • Amazon's Quantum Ledger Database (QLDB) stores data in Ion documents.[1]
  • PartiQL, an open source SQL-based query language also by Amazon, is built upon Ion. PartiQL supported queries are used by QLDB, S3Select.[2]

Tooling and extensions

[edit]

References

[edit]

External links

[edit]