jQueryのgetJSONで読み込むjsonの要素名に-(ハイフン)使った顛末

jQueryのgetJSONを使ってjsonを読み込む際、要素名に-(ハイフン)を使うと表示されないエラーを解決した(してもらった)ときの話。 「そもそもハイフンは区切り記号じゃねぇ!」というご指摘はごもっともですが、ECなんかで商品番号や型番をキーにする場合など、どうしてもハイフンを入れたい状況というのはあるものです。
1
本と写真とイングリッシュマフィンの長尾さん @wildwest_kazya

@aWebprogrammer それはそうとワテさん。jQueryのgetJSONで引っ張ってきたjsonって要素名にハイフン使えないんすかね? ハイフン入れたら読み込んでくれなくて、ハイフン抜いたらちゃんと表示されるんですが(`・д´・ ;)

2013-03-29 03:27:27
ワテ @aWebprogrammer

@wildwest_kazya JSONの書き方にもよりますけど、要素部分を「”」でくくらないとエラーになるような気はするー

2013-03-29 03:33:27
ワテ @aWebprogrammer

@wildwest_kazya あっ、勘違いしてた、「ちゃんと"でくくってればエラー出ない」っていう部分で言えば、JSONの仕様として「"」でくくらないと仕様的にまずいと思う => http://t.co/YfMwQQCUbM

2013-03-29 03:59:06
本と写真とイングリッシュマフィンの長尾さん @wildwest_kazya

@aWebprogrammer うい、そこんとこはググッたので大丈夫かと。今書いてたのが{"ac-db":{"name":"肉","price":1250}} ってjsonで、ac-dbのハイフンが入ると表示されないんすよねぇ(-ω- )

2013-03-29 04:02:01
ワテ @aWebprogrammer

@wildwest_kazya あっ、もしかして、「item.ac-db」とかって書いてる?

2013-03-29 04:04:42

ちなみに、このときこんな書き方でjsonを読み込んでた。

======
$.getJSON("data.json", function(items) {
$("#items").append(
"<h1>" + items.ac-db.name + "</h1>"
)
});
======

この中のitems.ac-dbってなってるところをitems['ac-db']にしないといけなかったらしい。

ワテ @aWebprogrammer

@wildwest_kazya やっと理解しましたw、だったら、書き方を「item[’ac-db’]」って書き方に変えればいけるかとー

2013-03-29 04:06:14
ワテ @aWebprogrammer

@wildwest_kazya ドットシンタックス形式で表記すると、ハイフンが演算子扱いになっちゃうんで、ハイフンなんかが入ってる場合は、さっきみたいに連想配列形式の書き方にしないと動いてくれないっすー

2013-03-29 04:08:15
本と写真とイングリッシュマフィンの長尾さん @wildwest_kazya

@aWebprogrammer なるほど。いっかい連想配列形式の書き方にはしてたんですが、そんときクォーテーションつけ忘れちゃってたんで動かなかったんですな、きっと。(・ω・)fmfm

2013-03-29 04:09:00
ワテ @aWebprogrammer

@wildwest_kazya 普通に書いちゃうと、数式になっちゃうんでクォーテーションでくくって文字列扱いで指定してやらないと、確かに連想配列形式でもエラーが出ますなー

2013-03-29 04:11:15