4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XSONはeXtensible and Simple Object Notationの略で、現状使われている多くのデータシリアライゼーションフォーマットや設定ファイルのフォーマットを改善して作られたそうです。

XSONには以下の2つの原則があるそうです。基本的にはシンプルな仕様にしつつもユーザーによる拡張を可能にしている点が特徴です。

  • 非常にシンプルな基本仕様
  • ユーザーがファイルごとに機能を追加できる

XSONのサンプルを以下に示します。仕様がシンプルであるために、雰囲気で読むことができます。

/* (This is a multi-line comment)
 * List of servers in an XSON file
 */
servers: {
  //Another comment.
  alpha:  [10.0.0.2, My Home Server]
  bravo:  [10.0.0.7, My Work Server]
  charlie:[10.0.0.9, My Friend's Server]
  aux: {
    //Whitespace around (but not inside) the key or value is ignored
    os        :  Ubuntu
    version   :  22.04 LTS
    start time:  14:03:59:10 //The first colon is used to separate the key and value
  }
}

記法仕様

キーバリュー

XSONのキーはコロン : で区切られ、要素は改行で区切られます。
文字列にはクォートが不要で任意の数の空白を含むこともできます。

key: value
my key: my value

1行の中に複数個のコロンがあった場合は一番左のコロンが区切り文字になります。

my : character: 0x3A 

この例ではキーは my でバリューは character: 0x3A です。

キーは位置位である必要があり、大文字と小文字は区別されません。
以下の例は同じキーと認識され、解析エラーが発生します。

key1: value 1
Key1: value 2

キーとバリューの前後の空白は無視されます。つまり、以下の5つは全て同等です。

  my long key     : my long value
my long key:my long value
 my long key: my long value
    my long key    :my long value
my long key: my long value

型の解釈

XSONには型がありません。つまり、型情報は各言語のXSONパーサーによって与えられることになります。

例えば、以下のXSONがあった時に、

my magic number: 10

読み出し時にパーサーに対して型情報を指定して読み出しを行います。

get<string>("my magic number"); //returns '10' as a string variable
get<int>("my magic number"); //returns 10 as a signed integer
get<bool>("my magic number"); //returns 'true'
get<float>("my magic number"); //returns 10.f as a float

配列

角括弧とカンマを使って配列を定義できます。
末尾のカンマは許容されます。

my array: [
  value one,
  value two,
  value three, //trailing comma is allowed
]

オブジェクト

XSONのオブジェクトは波括弧に囲まれたキーバリューのペアです。

my key: my string value
my object: {
  property one: true
  property two: false
  property three: {
     key: this is inside yet another object
  }
  property four: [
    this is an array inside an object
  ]
}

コメント

XSONのコメントはC言語と同じような構文です。

//This is a single line comment
key: value //This is an in-line comment. This comment is not included in the value.
/********************************
 * This is a multi line comment *
 ********************************/

/* This is another multi line comment.
 Maybe it would describe the significance of 'key'
 */
key1: value /* You can place multi line comments on one line */
key2: value /* Or you could even make it span
               multiple lines after some XSON text */

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?