我拿到的json本质是一个JS的赋值语句,如:
var data = {
"key": "value"
};
对于这种格式,是没办法直接使用iOS内置的方法来解析的。我的解决方案是:取回数据后,先转为NSString格式,然后通过字符串方法去掉var data =
和尾部的;
,再转为NSData格式,再用json
序列化方法转换出来。
如果有更好的方案,也希望有同学能分享出来学习哈。
1
youxiachai 2015-05-25 12:56:16 +08:00
蛋碎..这个不叫json...是直接的js脚本..
如果是抓网页的话,那就无解了..(如果可能倒是可以eval)取值 如果是后台返回的..明显那个人的实现有问题.. |
2
publicID001 2015-05-25 12:57:15 +08:00 1
JavaScriptCore
|
3
inmyfree 2015-05-25 13:00:32 +08:00
@youxiachai 洗洗睡吧
|
4
jun4rui 2015-05-25 13:01:18 +08:00
这个接口是谁写的?这不是json啊。
|
5
tuoxie007 2015-05-25 13:04:47 +08:00 via iPhone
想办法执行一下js脚本吧,比如比较土的办法,用webview
|
6
pysama OP |
7
tinyhill 2015-05-25 13:20:14 +08:00 via iPhone
js 不是可以直接执行吗?再不济用 eval 啊
|
8
yangxiongguo 2015-05-25 13:24:45 +08:00
N 年前的果然屌,返回后直接执行。
|
9
lixia625 2015-05-25 15:35:29 +08:00
|
10
saber000 2015-05-25 18:51:26 +08:00
正则贪心匹配花括号,这样:
\{.*\} |
11
luciferlu 2015-05-25 19:13:06 +08:00
可以算是JSONP吧,http://en.wikipedia.org/wiki/JSONP
|
12
pysama OP |
14
learnshare 2015-05-25 21:20:28 +08:00
这是 JavaScript,可以 eval(),不过不建议这么干
|
15
WildCat 2015-05-25 21:43:25 +08:00
String 替换是最好的方式了吧,eval() 很浪费性能,还得初始化个 JavaScriptCore
|
16
msg7086 2015-05-25 21:45:53 +08:00
找到第一个等号和最后一个分号,然后strip掉嘛
|
17
pysama OP 集思广益,一起谢过LS的各位同仁指点哈
|
18
bombless 2015-05-25 22:29:04 +08:00
你可以爬ast啊
这种工具我记得有一些不错的 |
20
pysama OP @xi_lin 恩,不是var x = {}。 是 callback(data)哈,直接把callbackFunctionName传过去了。
|
21
typcn 2015-05-25 23:25:18 +08:00
如果你确定那个 var data 不会变,这就是最好/最快的办法了。
如果可能变的话,就放到 webview 里面运行一下 |
22
rcmerci 2015-05-26 16:16:48 +08:00
我擦。。这是json吗
|