2016-01-27 53 views
0

我有以下格式的JSON響應。使用' - '的Javascript對象屬性無法正常工作

{ 
    "_meta" : { 
       "next-person-id" : "1001", 
       "totalPersons" : "1000" 
      } 
} 

我採用了棱角分明的$http服務檢索這一點,並試圖訪問next-person-id屬性在JavaScript中像下面,

$http.get(url).then(
     function(response){ 
       console.log(response._meta.next-person-id); 
     } 
); 

但在響應next-person-id未定義始終。但是我可以訪問totalPersons屬性。在javascript中使用「 - 」字符獲取屬性有什麼問題嗎?

+0

您可以通過以下鏈接查看JavaScript變量名驗證https://mothereff.in/js-variables#%E0%B2%A0% 5f%E0%B2%A0 –

回答

7

使用括號標記:

console.log(response._meta['next-person-id']); 

另一種可能是改變鍵使用下劃線,這樣_meta.next_person_id會工作。

1

你不能寫變量使用 - 因爲它也是一個負號。

爲了解決這個問題,用方括號:

console.log(response._meta['next-person-id']); 
-1

沒錯真的,因爲在JavaScript你可以使用Latin lettersnumbers$_符號變量或屬性。

如果你想使用-,你應該用字符串引號將其轉義。

這樣

var obj = { 
    'next-person-id': 2 
} 

console.log(obj['next-person-id']); // 2 

說明:

Global scope-裝置minus。它試圖從name減去person。所以,你會得到這樣的錯誤:

ReferenceError: name is not defined 

JS您可以訪問兩種方式

1)點的國家

obj.property 

2)括號國家

到對象屬性
obj['property'] 

在這裏你需要解析字符串,所以你知道在字符串中可以有任何符號除了字符串報價符號(它將關閉字符串)

參考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors#Bracket_notation

+0

「,因爲在JavaScript中可以對變量或屬性使用拉丁字母,數字和$ _符號。」 - 您可以在標識符中使用很多其他字符。 – Quentin

+0

「在全局範圍內 - 表示減去。」 - 範圍無關緊要。這就是'-'的意思是在字符串之外。 – Quentin

+0

@Quentin隨時編輯我的答案 –