javascriptで@アットマークなどの特殊文字を含む場合のデータ参照でエラーが出る時の備忘録


ニッチな事例ですいませんが、忘れててすごくハマってしまったので、同じように困った方のために残しておきます。入れ子としては良くあると思いつつ、何度か表現を忘れてしまう事がありましたので。

Javascriptで、例えばJSONデータを取得する際に、
「@」などの特殊な記号を含むデータ項目があった際に、
どういった表現(エスケープ的な方法)があるかを記載しておきます。

例えばjsonデータで、下記のようなネスト(階層化)されたものを
参照した際に、最下層のデータ項目にアクセスする際に
【親.子.孫】といった記載をする場合があると思います。(ドットでつなぐ)

【課題の例】

・大カテゴリー
・子カテゴリー
・孫(値) ★ここのデータにアクセスしたい
    データ項目名に「@が含まれている」@time など

【失敗例】


//パターン1
json.oya.ko.@mago;

//パターン2
json.oya.ko.[@]mago;

json.oya.ko.["@"]mago;

上記では、「@」は文字列扱いしてくれず、エラーになります。

エラーが出ない例(ドットを使わない)

json.oya.ko["@mago"];

上記であれば、文字列としてみてくれます。

しくじりポイントとしては、最終階層の中でどうにか表現しようとして、
失敗したことです。また、ドットで参照ばかりしていたので、
この入れ子的記載を忘れてしまった事です。

ちなみに、こちらは実際に、
「アットマークを含むデータ項目名」に出会い、
困っていたのですが、良い検索方法(Google)も思いつかず・・・

※政府が出しているオープンデータ(統計データ)にも
 こうした特殊文字があります。

JSベテランからしたら当たり前ではあると思いますので、
是非同じ悩みにあったJS初級~中級位の方のお役に立てたらと!

``