5
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?

RSONはRust Object Notationの略で、Rustの形式でオブジェクトの表記することを目的にしたものです。RON(https://github.com/ron-rs/ron)を参考にしつつ、よりRustのシンタックスに近づけたものです。

RSONを考える前にJSONの問題について考えます。

{
   "materials": {
        "metal": {
            "reflectivity": 1.0
        },
        "plastic": {
            "reflectivity": 0.5
        }
   },
   "entities": [
        {
            "name": "hero",
            "material": "metal"
        },
        {
            "name": "moster",
            "material": "plastic"
        }
   ]
}

例えば上記のJSONにはこのような問題があります。

  • 構造体とmap型が同一で、フィールドの順番はランダムです
  • 末尾のカンマが許されていません
  • コメントを記述できません

上記のデータをRSONで表現するとこのようになります。
RONの表記に似ていますが、一部のカッコの使い方が異なることが分かります。
RSONのほうがRustネイティブな表記に近いです。
RSONはRONのforkなので多くの部分でRONと共通の仕様を持っているようです。

/*
 * Scene object example
 */
Scene { // class name is optional
    materials: { // this is a map
        "metal": {
            reflectivity: 1.0,
        },
        "plastic": {
            reflectivity: 0.5,
        },
    },
    entities: [ // this is an array
        { // this is an object
            name: "hero",
            material: "metal",
        },
        {
            name: "monster",
            material: "plastic",
        },
    ],
}

5
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
5
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?