JSONポインタの操作

Deeplからの自動翻訳

4D v16 R4 では JSONオブジェクトを検証 できるようにオブジェクトコマンドを充実させました。 4D v16 R5 では JSONポインタのサポートを導入し、さらに進化させました。でも、JSONポインタとは何でしょうか?

データベースのレコードに各従業員の会社情報を保存しないように(代わりに会社レコードへのリンクを使用)、JSONドキュメントをさまざまな場所で再利用できるパーツで構成すると、非常に便利な場合があります。

たとえば、Webサイトでの注文を例にとると、顧客が配送先住所を入力し、請求先住所を同じに指定します。この場合、住所情報を重複して登録するのではなく、配送先住所を請求先住所への参照として定義することができる。

また、JSON形式で保存されたデフォルトのプロパティを含むテンプレートオブジェクトを定義し、プロパティの一部を別のJSONファイルに保存されている情報とマージするシナリオもあります。

サイクルを含むオブジェクト(すなわち、互いを含む2つのオブジェクト)は、JSONで文字列化することができません。JSONポインターは、JSONフォーマットとの互換性を保ちながら、循環参照を表現する方法です。

JSONポインタのコンセプト

JSONポインターは、同一または別のJSON文書内の特定のフィールドまたはキー値にアクセスするために使用できる文字列構文を定義した規格です。これは、”/”文字で区切られた文字列で構成されています。これらの文字列は、オブジェクトのキーまたは配列のインデックスを指定します。JSONポインターの構文は、RFC 6901で定義されています。

例えば、このオブジェクトは

{
    "foo": {"$ref": "#/bar"},
    "bar": "42"
}

と解決することができます。

{
   "foo": "42",
   "bar": "42"
}

NEW COMMAND

この JSON resolve pointersコマンドは、パラメータとして渡されたオブジェクトにあるすべてのJSONポインタを、オプション設定(ある場合)と共に解析します。そして、成功ステータス、結果値、潜在的なエラーのリストを含むオブジェクトを返します。

いくつかの例…いつでも役に立ちます!

JSONポインタの動作について学ぶ(理解する)ために、データベースのデモ例をご覧ください。

データベースの例

デモに加えて、別の例も紹介します。$object 変数に次の内容が格納されているとします。

以下のようなコードを実行すると

$result:=JSON Resolve pointers($object)
trace

$object$result の変数に表示される内容は次のとおりです。

blank

$result はオブジェクトで、成功のステータスと返された値の両方を含んでいることに注意してください。もしエラーがあれば、それも含まれているはずです。

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。