
我拿到的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 JavascriptCore |
3 inmyfree 2015-05-25 13:00:32 +08:00 @youxiachai 洗洗睡吧 |
4 junrui 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吗 |