μson (uson)はシェルのために特別に設計された、人間が読めるコンパクトなデータシリアライゼーションフォーマットです。
以下の特徴を持ちます。
- JSONの上位互換
- ホワイトスペースはパース結果に影響を与えません
- 文字列を
"
でクォートすることはオプションです - 配列の区切りの
,
はホワイトスペースで代替できます - コロン
:
を繰り返すことでネストしたオブジェクトを表現できます - カスタムデータ型をしようでき、
!
でキャストできます
例
以下のUSONオブジェクトは、
endpoint:id:wikipedia pages:[Malta Prague "New York"]
JSONではこの用に表現されます。
[
{
"endpoint": {
"id": "wikipedia"
}
},
{
"pages": [
"Malta",
"Prague",
"New York"
]
}
]
サポートされている型
USONは以下の型を持ちます
- false
- null
- true
- array
- object
- number
- string
基本的な型
基本的な型の例を示します。
number:12.05 text:Banana quotedText:"John Devilseed" empty:null good:true
このUSONは以下のJSONと同等です。
{
"number": 12.05,
"text": "Banana",
"quotedText": "John Devilseed",
"empty": null,
"good": true
}
配列型
[]
で囲むことで配列を表現できます。
simple:[1 2 3] texts:[Malta Budapest "New York"] objects:[{id:1}]
{
"simple": [
1,
2,
3
],
"texts": [
"Malta",
"Budapest",
"New York"
],
"objects": [
{
"id": 1
}
]
}
オブジェクト型
obj:{name:John} {nested:[{id:42} value:"Nagano"]}
オブジェクト型の表現には {}
を使います。
{
"obj": {
"name": "John"
},
"nested": [
{
"id": 42
},
{
"value": "Nagano"
}
]
}
ネストしたオブジェクト
コロン :
を繰り返すことでネストしたオブジェクトを表現できます。
cities:eu:hu:budapest:Budapest
[
{
"cities": {
"eu": {
"hu": {
"budapest": "Budapest"
}
}
}
}
]
キャスト
!を使ってキャスト表現できます。例えば、以下は文字列型の42を表しています。
str!42
コメント
#
から行末まではコメントとして扱われます。
array:[1 2 3] # this is comment