Minecraft Wiki
登録
Advertisement

JavaScript Object NotationJSON)は、人間にもプログラムにも読みやすい形式で構造的にデータを記述するためのフォーマットである[1]

MinecraftではJSONフォーマットは、装飾や特殊機能が利用できるテキストであるJSONテキストや、リソースパックデータパックアドオン内の設定ファイル、および一部のセーブデータの保存などに使用されている。

記法[]

JSONはテキストベースのフォーマットであるから、一般的なテキストエディタで作成して拡張子を.jsonとして保存することで容易に作成できる。ただしpack.mcmetaなど、JSONフォーマットで記述するにも関わらず拡張子が.jsonでない場合も存在する。

JSONファイルは改行・インデントの有無にかかわらず機能するが、ここでは可読性の為適宜改行とインデントを施す。ただし、ゲーム上の一部の入力画面(コマンドブロックなど)においては改行を施すことができない。

値の種類[]

JSONフォーマットには「論理値」「数値」「文字列」「配列」「オブジェクト」「null値」の6種類の値の種類が存在し、JSONはこれらを組み合わせて記述する。

論理値[]

 論理値(bool、boolean)は真偽を表す値である。

true(真)またはfalse(偽)のどちらかで表記する。文字列ではないため、引用符で囲んではならない。

  • true
  • false

数値[]

 数値(number)は必ず10進数で記述する必要がある。整数、整数、小数、負の数、およびeを用いた指数省略形が使用できる。負の数には-を付すが、正の数に+を付けることはできない。

  • 2
  • -0.5
  • 3e-6 (=3×10-6)

文字列[]

 文字列(string)は、二重引用符(")で囲んで表記する。NBTと違い、一重引用符(')は文字列の宣言に使用できない。

引用符の中には二重引用符(")とバックスラッシュ\以外の文字(ひらがな、漢字等含む)を使用できる。また文字列内では、直接記載できない記号や制御文字を以下の表記で指定することができる。ただし改行など、一部の環境では正しく機能しない文字もある。

表記 意味
\" 二重引用符
\\ バックスラッシュ
\/ スラッシュ
\b バックスペース
\f 改ページ
\n 改行
\r 復帰
\t タブ
\uXXXX Unicode文字の代記。XXXXには16進数表記の文字コードが入る。第0面以外の文字はサロゲート文字を前に付して表現する。
  • "hoge"
  • "Hello, world"
  • "文字列中の引用符は「\"」のように記述する"

※文字コードの都合上、環境によってはバックスラッシュ(\)が円記号(¥)のように表示される場合がある。なお、Minecraft上のデフォルトのフォントでは正しく\と表示される。

オブジェクト[]

 オブジェクト(object)では、波括弧({})で囲った中にキー(値の名前)と値のペアを記述することができる。

キーと値の間はコロンで区切り、複数のキー・値のペアを並列する場合はそれぞれの間をカンマで区切る。ただし、最後のキー・値のペアの後ろにはカンマがあってはならない。またキーは文字列なので、必ず二重引用符(")で囲む必要がある。

一つのオブジェクト内に同じ名前のキーがあってはならない。なお、値としてさらに別のオブジェクトやリストを入れ子的に設定することも可能である。

{
    "Bob": {
        "ID": 1234,
        "lastName": "Ramsay"
    },
    "Alice": {
        "ID": 2345,
        "lastName": "Berg"
    }
}

配列[]

 配列、またはリスト(array, list)は角括弧[]で囲った中に任意の値(種類を問わない)を並列することができる。

各データの間はカンマで区切るが、最後の値の後ろにカンマがあってはならない。

["Bob", "Alice", "Carlos", "Eve"]

凡例[]

このWikiでは、ファイルのJSON構造を下のようなツリーで表記する。

ツリー表記
    •  <値の名前>: 値の説明
    •  <リストの名前>: リストの説明
      • : リストの各要素の説明
    •  <オブジェクトの名前>: オブジェクトの説明
      •  <値の名前>: 値の説明
対応するJSON構造
{
	"<論理値の名前>": <論理値>,
	"<リストの名前>": [
		"<文字列>",
		"<文字列>",
		"<文字列>"
	],
	"<オブジェクトの名前>":{
		"<数値の名前>": <数値>
	}
}

各値のアイコンは値の種類を示しており、がオブジェクト、が配列、が論理値、が文字列、が数値である。JSONの数値の種類は1種類のみであるので基本的には倍精度浮動小数点数として表記しているが、NBTに変換される可能性のある値などではその型を明示するために8ビット整数、16ビット整数、32ビット整数、64ビット整数、単精度浮動小数点数が使用されていることももある。

オブジェクト内に記述する値の場合はその値の名前が、アイコンの後ろに太字で記載されている(例: pack_format)。値の名前が任意に設定できる場合は、 <Mobの名前空間ID>のように括弧つきで表記する場合がある。

値の後ろにはコロンを挟んで、その値が満たすべき形式、何を指定するのかという情報など、値の用途など、その値に関する情報が記載される。

NBT上での記法[]

JSONをNBT上に記述する際には、JSON全体を二重引用符または一重引用符で囲み単一の文字列として認識させなければならない。JSON内にさらに引用符が含まれる場合は、\"のように引用符をエスケープする必要がある。これはJSONとNBTが一見類似しているが全く異なるデータフォーマットであることに起因するものであり、NBTの中にJSONをそのまま記載することはできない。

逆も然りで、JSON内ではNBTは常に文字列として記述する。

用途[]

現在、JSONはMinecraftの以下のデータの保存・記述に用いられている。

関連項目[]

脚注[]

Advertisement