std.json
JSON の読み書き。任意モジュール。読み出しは短く書けることを優先していて、添字は常に Json を返す。無いキーや範囲外でも止まらず、最後に string() や int() で取り出したときに T? になる。
import std.json;
if var root = json.parse("{\"name\": \"さめ\"}") {
print(root["name"].string() ?? "名無し"); // さめ
}
json.parse json.parse_file json.stringify json.stringify_pretty json.of json.none Json.string Json.int Json.float Json.bool Json.list Json.keys Json.exists Json.kind
関数
- json.parse(s: string) → Result<Json>¶
-
文字列から読む。壊れていれば失敗を返す。
if var root = json.parse("{\"size\": 400}") { print(root["size"].int() ?? 0); // 400 }
- json.parse_file(p: string) → Result<Json>¶
-
ファイルから読む。
import std.file; _ = file.write("fish.json", "{\"name\": \"さめ\"}"); if var root = json.parse_file("fish.json") { print(root["name"].string() ?? ""); // さめ } _ = file.remove("fish.json");
- json.stringify(v: Json) → string¶
-
1行の文字列にする。
print(json.stringify(json.of(400))); // 400
- json.stringify_pretty(v: Json, indent: int) → string¶
-
字下げ付きの文字列にする。
v Json indent int 字下げの空白の数 var obj = json.of({"name": json.of("さめ")}); print(json.stringify_pretty(obj, 2).contains("\n")); // true
- json.of(v: int) → Json¶
-
Shark の値から Json を作る。
オーバーロード:
json.of(v: float) -> Jsonjson.of(v: string) -> Jsonjson.of(v: bool) -> Jsonjson.of(v: list<Json>) -> Jsonjson.of(v: map<string, Json>) -> Jsonprint(json.stringify(json.of("さめ"))); // "さめ" print(json.stringify(json.of(true))); // true print(json.stringify(json.of([json.of(1), json.of(2)]))); // [1,2]
- json.none() → Json¶
-
「無い」を表す Json。
print(json.none().exists()); // false
Json
JSON の値。無いところを引いても止まらず、「無い」を表す Json が返る。
- Json.string() → string?¶
-
文字列として取り出す。文字列でなければ none。
if var root = json.parse("{\"name\": \"さめ\"}") { print(root["name"].string() ?? ""); // さめ print(root["なし"].string() ?? "無し"); // 無し }
- Json.int() → int?¶
-
整数として取り出す。数でなければ none。
if var root = json.parse("{\"size\": 400}") { print(root["size"].int() ?? 0); // 400 }
- Json.float() → float?¶
-
小数として取り出す。
if var root = json.parse("{\"ratio\": 1.5}") { print(root["ratio"].float() ?? 0.0); // 1.5 }
- Json.bool() → bool?¶
-
真偽値として取り出す。
if var root = json.parse("{\"debug\": true}") { print(root["debug"].bool() ?? false); // true }
- Json.list() → list<Json>¶
-
配列として取り出す。配列でなければ空の配列。
if var root = json.parse("{\"items\": [1, 2, 3]}") { print(root["items"].list().len()); // 3 }
- Json.keys() → list<string>¶
-
表のキーを並べる。表でなければ空の配列。
if var root = json.parse("{\"a\": 1, \"b\": 2}") { print(root.keys().len()); // 2 }
- Json.exists() → bool¶
-
値があるかどうか。無いキーを引いたあとの確認に使う。
if var root = json.parse("{\"a\": 1}") { print(root["a"].exists()); // true print(root["b"].exists()); // false }
- Json.kind() → string¶
-
種類を返す。"none" "bool" "number" "string" "list" "map" のどれか。
if var root = json.parse("{\"a\": [1]}") { print(root.kind()); // map print(root["a"].kind()); // list }