Skip to content
インタ―システムズ製品やソリューション、キャリアの機会などについて、検索してご覧ください。

バージョン2016.1 のJSON前方互換コード記述方法

バージョン 2016.1 は非常に強力なJSON機能を新しく導入しました。しかしながら...

バージョン2016.1 のJSON前方互換コード記述方法

背景

バージョン 2016.1 は非常に強力なJSON機能を新しく導入しました。しかしながら、このバージョンのJSONシンタックスはバージョン2016.2で変更されます。これはCaché ObjectScript シンタックスとの整合性を保つためです。この変更により、バージョン2016.1で動作するコードは前方互換性がなくなります。

将来リリースされるバージョンで動作しなくなるコードを最小化するため、以下の推奨事項およびツールをご案内します。これらは実際に弊社内でバージョン2016.1のJSONアプリケーションに対して実施しているものです。

弊社ではこのような情報はお客様にとっても有益であると考え、この文書でご案内しています。これらの推奨事項に従い、以下にリンクされているマクロを適用することで、バージョン2016.1から2016.2へのアップグレードでJSONコードに対する変更の必要がなくなります。

( ) を使用する

バージョン 2016.1 では、JSONとCaché ObjectScript を混在させた場合、( ) の要・不要に一貫性がありませんでした。このため、今後のバージョンではJSONオブジェクト内の値にCaché ObjectScript の式を使用する場合は ( ) の使用が必須になります。

推奨:JSONの一部としてCaché ObjectScriptを使用する場合は、常にCaché ObjectScript部分を ( ) で囲んでください。言い換えると、JSON形式として不適切なものはすべて ( ) で囲みます。これはCaché ObjectScriptの変数名にも当てはまります。

例えば、次のようにします:

バージョン2016.1では、JSONリテラル文字列 ( http://www.json.org/ で定義されている “string” や “value” など)はCaché ObjectScript のシンタックスでエスケープされていました。例えば、文字列中の ” は “” でエスケープします。これは、オブジェクト初期化において、すべての妥当なJSONが妥当ではない事を意味します。これを改善するためリテラル文字列のエスケープはCaché ObjectScript のエスケープではなくJSONのルールに従うように変更されます。JSON値で ( ) で囲まれたものはいずれのバージョンでも同じように動作します。括弧は「この部分がJSONではなく Caché ObjectScript である」ことを示します。これは制御文字、二重引用符、バックスラッシュを含むリテラル値に適用されます。

推奨:JSONオブジェクト内でエスケープする必要があるすべてのリテラル値は括弧で囲って Caché ObjectScript のエスケープ(二重引用符2つ)を使用する文字列として定義します。例えば次のようにします。

システムメソッドの使用

バージョン2016.1 で記述されたJSONコードで、将来の変更により最も影響を受けるのは、標準Caché ObjectScript 名前規約に沿った新しいシステムメソッド・シンタックス (例 $methodname())です。今回の変更により、すべての .$foobar() メソッドは将来のバージョンでは .%Foobar() メソッドに置き換わります(注意: $ から % に変わり、最初の文字を大文字に変更)。この新しいメソッドはバージョン 2016.1 では使用できないため、バージョン 2106.1 で記述する「将来動作する」アプリケーションは、現在のシステムメソッドをすべてマクロにカプセル化し、そのマクロが将来のバージョンで新しいシンタックスを使用するようにします。
*サンプル* のマクロ群をこちら(英語サイト)で入手できます。
Gist: https://gist.github.com/bspead/bf23a28029e8d389ac39a3a4af3342bd

重要な免責事項: これらのマクロはサンプルとして提供するものであり、インターシステムズが動作を保証するものではありません(このため、これらマクロは製品に含まれることはありません)。また、アプリケーションのすべてのインスタンスがバージョン2016.2にアップグレード完了後にマクロを削除する必要があります – これらのマクロはアプリケーションのコードベースに永続的に含めるべきではありません。

推奨事項: この Gist コードサンプル(英語サイト) を使用して、アプリケーションのシステムメソッドをカプセル化します。

推奨事項: バージョン2016.1でシステムメソッド(.$foobar() 等)を使用するすべてのアプリケーションは、システムメソッドを直接使用する代わりに cosJSON.inc に含まれるマクロを使用します。例えば、

%Object と %Array クラスの使用

%Object と %Array クラスの名前は将来のバージョンでは %DynamicObject と %DynamicArray に変更されます。このため、%Object および %Array クラスを直接呼び出すことは避けてください。これらのクラスのほとんどは内部使用で直接使用するべきではありません。しかし、使用してもいいいくつかの場合があります。特に空文字列または文字列から新しいダイナミック・オブジェクトまたはダイナミック・アレイを作成する場合です。クラス名を直接使用する代わりに、インライン式を使用できます。

推奨事項: 新しいオブジェクトの作成に %New() を使用せず、インラインで作成します。例えば、

推奨事項: クラスメソッドにアクセスするための新しいダイナミック・オブジェクトのインスタンス化する場合はインライン式を使用します。例えば、

推奨事項: スタジオアシストでJSON変数を認識させるため #Dim を使用している場合は、そのまま %Object および %Array を使用しても問題ありません。バージョン2016.2へのアップグレードでこれが問題になることはありません。ただし、バージョン2016.1よりも後のバージョンではこれらのクラスは認識されなくなるため、スタジオアシストでこれら変数を認識させるには #Dim で使用しているクラス名を %DynamicObject と %DynamicArray に変更する必要があります。

関連するトピックス

最新のアラート&アドバイザリー

2024年 10月 10日
インターシステムズは、InterSystems IRIS、InterSystems IRIS for Health、HealthShare、HealthShare HealthConnect、TrakCare、Caché、および Ensemble の Web ゲートウェイ および CSP ゲートウェイ に影響を与えるセキュリティ脆弱性に対処しました。
2024年 8月 17日
インターシステムズは、非常にまれな状況下で、マルチボリュームデータベースでデータベース破損または エラーが発生する可能性がある不具合を修正しました。
2024年 8月 7日
HS2024-03 警告通知 には4つの警告が含まれます。 各警告の概要は以下の通りです。 各警告の詳細はリンク先の通知文書に記載されています。
2024年 7月 1日
Broadcom は、データベースアプリケーションにおいてデータ整合性エラーを引き起こす可能性がある問題を発表しました。詳細は、以下の Broadcom のページをご参照ください。
2024年 5月 2日
インターシステムズは、一部の SQL クエリが不正な結果を返す原因となる 3 つの不具合を修正しました。 影響を受けるクエリの詳細については、以下を参照してください。
2023年 11月 21日
InterSystems IRIS for Health, HealthShare Health Connect そしてHealthShare 製品に関して複数の警告(HS2023-02-*)が発表されました。
2023年 11月 15日
InterSystems は SAM (System Alerting & Monitoring) のサポートを終了し、今後は非推奨とすることを決定しました。 InterSystems は本テクノロジーを利用しているお客様のサポートを続けますが、新規プロジェクトでの利用を推奨しません。
2023年 10月 31日
InterSystems は InterSystems IRIS での VxFS ファイルシステムのサポートを終了し、 IRIS 2023.3 から非推奨とすることを決定しました。
2023年 10月 24日
InterSystems は、IRIS 2023.3 から InterSystems Cloud Manager (ICM) の開発を中止し、非推奨とすることを決定しました。

今すぐ申し込む

サポートアラート、重要な問題、
修正、製品リリースに関する通知を受け取ることができます。
*必須項目
Highlighted fields are required
*必須項目
Highlighted fields are required
このフォームを送信することにより、お客様は、サポートアラート、重要な問題、重要なアップデート、修正、および製品リリースに関する通知を電子メールで受け取ることに同意するものとします。 さらに、お客様は、お客様のビジネスコンタクト情報が、米国でホストされている当社のCRMソリューションに入力されることに同意したことになります。お客様情報は、適用されるデータ保護法に従って維持されます。
**送信ボタンをクリックすることにより、お客様は、既存および将来のインターシステムズ製品、提供物、イベントに関するニュース、更新、その他のマーケティング目的のために連絡を受けることに同意します。