JSON.parse()在Worklight混合适配器中不起作用

时间:2013-04-02 12:29:58

标签: adapter ibm-mobilefirst

我正在尝试使用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)

任何帮助将不胜感激

1 个答案:

答案 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对象。

Source