天使漫步IT工作室

PHP和JAVA如何解析jsonp格式的数据转换为对象


一、Jsonp数据

在百度百科对Jsonp的定义中摘取了两行关键句来解读Jsonp。

但是今天这篇文章聊的并不是怎么使用Jsonp,而是非JavaScript场景中拿到Jsonp格式的东西,如何解析出Json数据。

二、暴力法去掉Padding

Java代码如下:
public class JSONPParser {
    
    public static Map parseJSONP(String jsonp){
        
        int startIndex = jsonp.indexOf("(");
        int endIndex = jsonp.lastIndexOf(")");
        String json = jsonp.substring(startIndex+1, endIndex);
        System.out.println(json);
        return JSON.parseObject(json);
    }
    
    public static void main(String[] args){
        
        Map map = parseJSONP("jsonp_test({})");
        
    }

}
PHP代码如下:
function jsonp_decode($jsonp, $assoc = false) {
    if($jsonp[0] !== '[' && $jsonp[0] !== '{') {
        $jsonp = substr($jsonp, strpos($jsonp, '('));
    }
    return json_decode(trim($jsonp,'();'), $assoc);
}

以上可以看出,第一步都是匹配Jsonp的外层包装,然后利用字符串替换的方式把外层置空从而得到json数据,再使用各语言提供的Json api对数据进行解析。

三、利用API

非常抱歉,PHP并没有API,JAVA是有的。其实就是把Jsonp丢进JsonObject的类中解析即可,无需剔除最外层再解析。

当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »