「-」ダッシュを使用してJSONプロパティにアクセスできません


127

文字列にダッシュ文字が含まれていると、jsonオブジェクトから値を取得できません。

{
"profile-id":1234, "user_id":6789
}

解析されたjsonObj.profile-idものを参照しようとすると戻りますReferenceError: "id" is not definedが、jsonObj.user_idは6789を返します

私は、外部API呼び出しによって返される値を変更する方法がなく、ダッシュを削除するために返された文字列を解析しようとすると、渡されたURLなどが破壊されます。助けて?


3
JSONの解析に使用する言語/パーサーに関する情報を追加すると役立つ場合があります。
マイクブラント

1
Utilities.jsonParseあまり言わない。
Darin Dimitrov

回答:


277

jsonObj.profile-id減算式(つまりjsonObj.profile - id)です。

識別子に表示できない文字を含むキーにアクセスするには、角かっこを使用します。

jsonObj["profile-id"]

2
ありがとう!情報:角度でも動作します:{{jsonObj.attributes ["profile-id"]}}
BastienSander

3
これがJavaScriptとそのネイティブ実装で文字列によってオブジェクトプロパティキーにアクセスするように機能する場合、すべての上で機能することを確認してください
ジョンスミス

1
JS「スタイル」オブジェクトでも機能します!@SLaks "box-shadow"プロパティを設定するためにJavaScriptスタイルオブジェクトを使用するようにこのソリューションを推定しました。document.getElementById("someId").style["box-shadow"]="2px 2px 2px #616161";よく働く!
Eric Hepperle-CodeSlayer2010

2
@ EricHepperle-CodeSlayer2010:style.boxShadow代わりに使用する必要があります。styleオブジェクトの変換キャメルケースにハイフン。
SLaks

甘い!ありがとう...キャメルケースが好きです。入力する文字数が少ないので、方法が優れています。動作することを確認しました!!
Eric Hepperle-CodeSlayer2010

3

この回答に加えて、Node.jsで配列構文を使用してJSONにアクセスすると、[]ネストされたすべてのJSONキーはその構文に従う必要があることに注意してください。

これは間違った方法です

json.first.second.third['comment']

「未定義」エラーが表示されます。

これが正しい方法です

json['first']['second']['third']['comment'] 

これはなぜ問題なのですか?最初の方法は完全に正常に見えます。これは言語のバグですか?
Nikola Diklic

この方法を使いたい場合。ramdajs.com/docs/#pathの
Amrit Pal Singh

2

アンシブルでハイフンを使用すると、これは私にとってうまくいきました:

    - name: free-ud-ssd-space-in-percent
      debug:
        var: clusterInfo.json.content["free-ud-ssd-space-in-percent"]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.