我正在尝试使用Adapter for Push Notification。我按照此IBM Worklight Developer site中的所有步骤定义推送通知,并创建一个项目及其工作。现在我想进一步向特定设备发送通知。对于这个工作灯,给出一个方法getDeviceSubscriptions(),它返回包含每个订阅设备的对象数的JSON数组。
deviceSubscriptions = userSubscription.getDeviceSubscriptions() ;
JSON包括:
[{
“平台”: “谷歌”,
“eventSourceId”: “PushAdapter.PushEventSource”,
“别名”: “myPush”,
“令牌”:“”,
“userAgent”:“”,
“device”:“”,
“applicationId”:“”,
“选项”:{}
}]
现在我想使用JSON中的数据来获取设备和令牌。现在为此我使用JSON.stringify(deviceSubscriptions)这个方法将deviceSubscriptions转换为字符串。但我希望我可以直接访问JSON数组中的令牌和设备,因为我使用了JSON.parse(deviceSubscriptions),但这给出了错误:
“Ecma错误:TypeError:无法找到对象的默认值。(C%3A%5Cworkspace%5CFINAL%5Cadapters%5CPush / Push-impl.js#43)”
第43行是:
JSON.parse(deviceSubscriptions)
任何帮助将不胜感激
答案 0 :(得分:3)
Worklight Adapters的JavaScript代码使用Mozilla Rhino在Worklight Server上运行。 Rhino是一个完全用Java编写的JavaScript的开源实现。您可能无法访问客户端上运行的JavaScript引擎可以访问的所有内容。
似乎JSON或JSON.parse未定义。尝试将以下库添加到Worklight Adapter [name]-impl.js
文件中:
json2.js:此文件在全局对象中创建JSON属性(如果存在) 不是一个,将其值设置为包含stringify的对象 方法和解析方法。 parse方法使用eval方法来执行 解析,用几个正则表达式来防范它 意外的代码执行危险。在当前的浏览器中,此文件什么也不做, 更喜欢内置的JSON对象。