有没有办法将 JSONP 格式转换为 JSON?

Posted

技术标签:

【中文标题】有没有办法将 JSONP 格式转换为 JSON?【英文标题】:Is there any way to convert JSONP format to JSON? 【发布时间】:2012-05-03 17:59:13 【问题描述】:

我正在尝试解析来自服务器的响应,我是这个主题的新手,不幸的是它是 JSONP 格式的。我不知道如何解析 JSONP 格式,当我尝试使用 JSON Parser 时它返回空值。 谁能帮我做这件事...

提前致谢。

【问题讨论】:

【参考方案1】:

JSONP 只是封装在 javascript 函数调用中的 JSON。例如,类似:

callback("status":"success", "someVar":1);

所以你有几个选择。如果您使用WebView,您可以在JavaScript 中定义一个名为callback 的函数,然后只需在JSONP 数据上调用eval()。这将调用 callback 函数,将解析后的 JSON 对象传递给它(eval() 会为您进行解析)。

或者,如果您的 Java 代码中有 JSONP 字符串,最简单的选择可能是提取 JSON 子字符串,例如:

String json = jsonp.substring(jsonp.indexOf("(") + 1, jsonp.lastIndexOf(")"));

这将去掉callback();,只剩下"status":"success", "someVar":1,然后应该使用任何标准的JSON 解析器进行解析。

【讨论】:

我没有使用 webview,我使用它来登录,所以我所做的是,如果响应不为空,那么用户进入下一个屏幕,我使用了 json 解析器,所以我得到了解析错误。你能给我举个例子吗.. 是的,使用上面的第二个示例,即带有substring() 调用的示例。然后只需执行JSONValue.parse(json),或者您的 JSON 解析器的等效项。可运行示例:ideone.com/5v3z6 对不起..我是这个话题的新手..当我使用 JSON 解析器解析时,它显示为空,那么我该怎么做呢?你能把完整的代码发给我吗.. 我想问一下,有没有办法在提供服务的方式上包装 json,所以 json 文件不是 jsonp,但最终由脚本提供服务? [ "name":"foo", "id":1 ] 将是原始的,当加载到 dom 时,它将被包装到 foo() 例如? 当回调以 JSONP 劫持破坏者为前缀时失败,例如 while(1);for(;;;);,不幸的是。

以上是关于有没有办法将 JSONP 格式转换为 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将 json 对象转换为 json l 文件

我有一个包含 .mat 格式文件的文件夹。有没有办法可以使用 python 将所有这些文件转换为 json? [复制]

将 jsonp 转换为 json [关闭]

使用 pyspark 将 Outlook 电子邮件转换为 json 文件格式

Excel Vba。将 [m] 格式转换为通用格式

Typescript / Angular2:将 JSON 转换为与 Observable 和 JSONP 接口