Instiq
第6章 · 自動化とAI·v1.0.0·更新 2026/7/20·読了目安 約18分

変更要約: 初版

6.2JSONの構築とYANG

この節の要点

JSONを「有効か無効か」を判定できる水準で読み書きし(オブジェクト{}配列[]の別・末尾カンマ不可キーは二重引用符・値の型の区別)、その上でYANGcontainer/list/leafでデータの型と構造を定義する言語であることを、モデル駆動運用の利点として理解します。

RESTCONFやコントローラAPIとやり取りする以上、送るペイロードが有効なJSONでなければ、機器に届く前にリクエストが弾かれます。この節で身につけるのは「JSONとは何か」という説明ではなく、目の前の断片を見て有効/無効を即断し、無効なら1文字単位で直せる力です。そしてJSONがデータの入れ物であるのに対し、YANGそこに何が入るべきかを定めた型定義です。両者を「どちらもデータの話」と混ぜると、「JSONで型を強制できる」という誤解に落ちます——実際には型と構造の保証を担うのがYANGであり、その恩恵でベンダ横断の一貫した自動化が成り立ちます。

6.2.1有効なJSONの構成規則

  • オブジェクトは波括弧{}キーと値の対を並べ、配列は角括弧[]値を順に並べる。両者は入れ子にでき、{"interfaces": [{"name": "Gi1", "enabled": true}, {"name": "Gi2", "enabled": false}]} のように「オブジェクトの中に配列、配列の中にオブジェクト」が標準形になる。開いた括弧と閉じた括弧の種類と数が一致していなければ無効で、{] で閉じるのはよくある破綻。
  • キーは必ず二重引用符で囲む{"name": "Gi1"} は有効・{name: "Gi1"} は無効)。JavaScriptのオブジェクトリテラルや Python の辞書は引用符なしキーや単一引用符を許すが、JSONは単一引用符を一切認めない——{'name': 'Gi1'} は無効である。この差はPythonのdictをそのまま文字列化して送ったときに起こりやすく、json.dumps()を通す理由でもある。
  • 最後の要素の後ろにカンマを置いてはならない(末尾カンマは無効){"a": 1, "b": 2,}[1, 2, 3,]構文エラーで、パーサは文書全体を拒否する。行を追加/削除して編集したペイロードで最も起きやすい破綻であり、「エディタでは1文字の違いだが、APIから見れば文書全体が無効」という点が重要。
  • 値の型は区別される:文字列は二重引用符付き("1500")、数値は引用符なし(1500)、真偽値は小文字のtrue/false、空値はnullである。True/False(Python流の大文字始まり)やNoneJSONとしては無効で、"1500"1500別の型として扱われるため、数値を期待するフィールドに引用符付きで送ると型エラーで拒否されうる。

続きは無料登録で読めます

冒頭を無料で公開中。無料登録でこの節の全文と、第4章以降を含む全参考書・全問題集が読めます。