Edited at

jsonのキーにハイフンをいれないほうがいい


概要

久々のjsonをajaxで持ってくる案件。

なんとなくキーにハイフンをいれたのですが、どうにも持ってこれない。

どうやらjQurey*ajax*jsonな環境の中でキーにハイフンを与えるのは相性がよくないようです。

2019.02.03 訂正アリ(記事最下部にある追記参照)


結論

これからはjsonのキーにハイフンを入れるのは控えようと思いました。

というか、連想配列なときにキーにハイフンを含めるのは控えようと思いました。そのほうが心が健康でいられそうです。

ハイフンがあるときはドット"."でつなぐのをやめようと思いました。

でも、そもそも、やっぱりドットでつなぐか括弧でつなぐか&命名規則は最初から決めたほうが安全そうだなと感じました。

コードにルールはとても大事!!

かくいう私は、用事がなければドットで手軽につなぎたいのでスネークかキャメルにするのが良さそうです。


ダメだった例

ハイフンがあって取れなかった。

[

{
"title": "関東",
"title-en": "kanto",
},
{
"title": "関西",
"title-en": "kansai",
}
]


OKだった例

アンダーバーに変えてみた!(通った!!)

[

{
"title": "関東",
"title_en": "kanto",
},
{
"title": "関西",
"title_en": "kansai",
}
]


追記

@cfm-artさんがコメントでアドバイスをくださったので、訂正します。

問題は相性ではなく、取得の仕方でした。

hoge.title-en // hoge.title - en 引き算として扱われる

hoge['title-en'] // OK!!

こんな感じでhoge.['キー']にすればちゃんと取れるということでした。

ご指摘ありがとうございましたm(_ _)m