0

我正在尝试使用适配器进行推送通知。我遵循此 IBM Worklight Developer 站点中为推送通知定义的所有步骤,并制作了一个项目及其工作。现在我想进一步向特定设备发送通知。对于此工作灯,请提供一个方法 getDeviceSubscriptions(),该方法返回 JSON 数组,其中包含每个订阅设备的对象数。

deviceSubscriptions = userSubscription.getDeviceSubscriptions() ;

JSON包括:

[{

“平台”:“谷歌”,

"eventSourceId":"PushAdapter.PushEventSource",

"别名":"myPush",

“令牌”:“”,

“用户代理”:” ”,

“设备”:” ”,

“应用程序ID”:“”,

“选项”:{}

}]

现在我想使用 JSON 中的数据来获取设备和令牌。现在为此我使用 JSON.stringify(deviceSubscriptions) 这个方法将 deviceSubscriptions 转换为字符串。但是我希望我可以直接访问 JSON 数组中的令牌和设备,为此我使用了 JSON.parse(deviceSubscriptions) 但这给出了错误:

“Ecma 错误:TypeError:找不到对象的默认值。(C%3A%5Cworkspace%5CFINAL%5Cadapters%5CPush/Push-impl.js#43)”

第 43 行是:

JSON.parse(设备订阅)

任何帮助,将不胜感激

4

1 回答 1

3

Worklight 适配器的 JavaScript 代码使用Mozilla Rhino在 Worklight Server 上运行。Rhino 是完全用 Java 编写的 JavaScript 的开源实现。您可能无法访问客户端上运行的 JavaScript 引擎可以访问的所有内容。

似乎 JSON 或 JSON.parse 都未定义。尝试将以下库添加到您的 Worklight Adapter[name]-impl.js文件中:

json2.js此文件在全局对象中创建一个 JSON 属性,如果还没有,则将其值设置为包含 stringify 方法和 parse 方法的对象。parse 方法使用 eval 方法进行解析,用几个正则表达式保护它,以防止意外的代码执行危险。在当前的浏览器上,这个文件什么都不做,更喜欢内置的 JSON 对象。

来源

于 2013-04-02T13:56:39.153 回答