【问题标题】:JSON.parse() is not working in Worklight Hybrid AdapterJSON.parse() 在 Worklight 混合适配器中不起作用
【发布时间】:2013-04-02 12:29:58
【问题描述】:

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

deviceSubscriptions = userSubscription.getDeviceSubscriptions() ;

JSON 包括:

[{

“平台”:“谷歌”,

"eventSourceId":"PushAdapter.PushEventSource",

"别名":"myPush",

“令牌”:“”,

"userAgent":"",

“设备”:“”,

"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)

任何帮助将不胜感激

【问题讨论】:

    标签: adapter ibm-mobilefirst


    【解决方案1】:

    Worklight 适配器的 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.

    【讨论】:

    • 感谢您的大力帮助。现在我将 json2.js 作为 json-impl.js 添加到我的适配器文件夹中,但是每当我添加它并调用或部署适配器时,出现以下错误“适配器部署失败程序”提交通知' 未在适配器的 JavaScript 文件中实现。"
    • 当我从适配器文件夹中删除这个 js 文件并部署适配器时,它会给出消息“成功部署”
    • 尝试将 json2.js 的内容复制/粘贴到您现有的 [name]-impl.js 文件中(您需要在其中使用 JSON.parse),而不是创建新文件。
    猜你喜欢
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多