2013-04-03 171 views
0

我正嘗試使用適配器進行推送通知。我遵循此IBM Worklight Developer站點中定義的推送通知的所有步驟,並製作項目及其工作。現在我想進一步發送通知到特定的設備。爲此工作燈提供getDeviceSubscriptions()方法,該方法返回包含每個訂閱設備的對象數的JSON數組。從JSON獲取數據

deviceSubscriptions = userSubscription.getDeviceSubscriptions() ; 

的JSON包括:

[{ 
    "platform": "", 
    "eventSourceId": "", 
    "alias": "", 
    "token": "", 
    "userAgent": "", 
    "device": "", 
    "applicationId": "", 
    "options": {} 
}, 

{

"platform": "", 
    "eventSourceId": "", 
    "alias": "", 
    "token": "", 
    "userAgent": "", 
    "device": "", 
    "applicationId": "", 
    "options": {} 
}] 

現在我想關鍵device和令牌的價值。那麼如何才能實現。

當時我使用JSON.stringify它返回一個字符串,但我希望有設備和令牌直接訪問。當我使用JSON.parse時,它給出[object , Object]但不顯示任何JSON。

+0

這JSON代碼是無效的,是故意的嗎? – Imperative

回答

2

的JSON解析後,使用此要指出的關鍵,直接

obj[0]["device"] 

對於所有可用的節點應該在的地方使用增量值[0],像

obj[i]["device"]; 
i++; 
+0

它不工作提供了錯誤:「錯誤了Ecma:類型錯誤:無法找到對象默認值 – User42590

+0

首先確認您的JSON ...有很多在線JSON驗證的可利用的。 –

+0

是的,我檢查了它的一個有效的JSON字符串 – User42590

0

剛使用數組語法訪問屬性:

var firstDevice=deviceSubscriptions[0].device; 
var secondDevice=deviceSubscriptions[1].device; 

etc ...

+0

它不工作會給出錯誤:「Ecma錯誤:TypeError:無法找到對象的默認值。 – User42590

0

更新

目前您的JSON是無效的,有效的JSON應該是:

{ 
    "items": [ 
     { 
      "platform": "Google", 
      "eventSourceId": "PushAdapter.PushEventSource", 
      "alias": "myPush", 
      "token": " ", 
      "userAgent": " ", 
      "device": " ", 
      "applicationId": " ", 
      "options": {} 
     }, 
     { 
      "platform": "Google", 
      "eventSourceId": "PushAdapter.PushEventSource", 
      "alias": "myPush", 
      "token": " ", 
      "userAgent": " ", 
      "device": " ", 
      "applicationId": " ", 
      "options": {} 
     } 
    ] 
} 

解析您的JSON字符串,如:

var data = JSON.parse(yourJsonString); 

現在訪問設備和令牌屬性值,如:

var device = data.items[0].device;  //give device value of 0th item 

var token = data.items[0].token;   //give token value of 0th item 

Check this fiddle

+0

它不工作給出錯誤:」 Ecma錯誤:TypeError:無法找到對象的默認值。 – User42590