【发布时间】:2012-05-03 17:59:13
【问题描述】:
我正在尝试解析来自服务器的响应,我是这个主题的新手,不幸的是它是 JSONP 格式的。我不知道如何解析 JSONP 格式,当我尝试使用 JSON Parser 时它返回空值。 谁能帮我做这件事...
提前致谢。
【问题讨论】:
我正在尝试解析来自服务器的响应,我是这个主题的新手,不幸的是它是 JSONP 格式的。我不知道如何解析 JSONP 格式,当我尝试使用 JSON Parser 时它返回空值。 谁能帮我做这件事...
提前致谢。
【问题讨论】:
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 解析器进行解析。
【讨论】:
substring() 调用的示例。然后只需执行JSONValue.parse(json),或者您的 JSON 解析器的等效项。可运行示例:ideone.com/5v3z6
while(1); 或 for(;;;);,不幸的是。