jsonp 常用util方法

jsonp 常用Java方法

(1)以jsonp的形式返回:函数名(json字符串)

Java代码  

  1. /*** 
  2.      * 用于jsonp调用 
  3.      * @param map : 用于构造json数据 
  4.      * @param callback : 回调的javascript方法名 
  5.      * @param filters : <code>SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter 
  6.                 .serializeAllExcept("content"); 
  7.         FilterProvider filters = new SimpleFilterProvider().addFilter( 
  8.                 Constant2.SIMPLEFILTER_JACKSON_PAPERNEWS, theFilter);</code> 
  9.      * @return : js函数名(json字符串) 
  10.      */  
  11.     public static String getJsonP(Object map,String callback,FilterProvider filters)  
  12.     {  
  13.         if(ValueWidget.isNullOrEmpty(map)){  
  14.             return null;  
  15.         }  
  16.         String content = null;  
  17.         if(map instanceof String){  
  18.             content=(String)map;  
  19.         }else{  
  20.         ObjectMapper mapper = getObjectMapper();  
  21.           
  22.         ObjectWriter writer=null;  
  23.         try {  
  24.             if(filters!=null){  
  25.                 writer=mapper.writer(filters);  
  26.             }else{  
  27.                 writer=mapper.writer();  
  28.             }  
  29.             content=writer.writeValueAsString(map);  
  30.             logger.info(content);  
  31.         } catch (JsonGenerationException e) {  
  32.             e.printStackTrace();  
  33.         } catch (JsonMappingException e) {  
  34.             e.printStackTrace();  
  35.         } catch (IOException e) {  
  36.             e.printStackTrace();  
  37.         }  
  38.         }  
  39.         if(ValueWidget.isNullOrEmpty(callback)){  
  40.             return content;  
  41.         }  
  42.         return callback+"("+content+");";  
  43.     }  

 应用:

Java代码  

  1. @ResponseBody  
  2.     @RequestMapping(value = "/json_detail", produces = SystemHWUtil.RESPONSE_CONTENTTYPE_JSON_UTF)  
  3.     public String jsonDetail(Model model, int id/*新闻的id*/,  
  4.             PaperNewsView view, HttpSession session,  
  5.             HttpServletRequest request, String callback) throws IOException {  
  6.         init(request);  
  7.         PaperNews news=(PaperNews) getDao().get(id);  
  8.         String content;  
  9.         /*int comment_type=0; 
  10.         if(type==2){//新闻 
  11.             comment_type=Constant2.COMMENT_TARGET_TYPE_NEWS; 
  12.         }else if(type==1){ 
  13.              
  14.         }*/  
  15.         String title=null;  
  16.         if(news.getType()==Constant2.TYPE_NEWS){  
  17.             title="新闻";  
  18.         }else{  
  19.             title="报料";  
  20.         }  
  21.         long commentCount=this.newsCommentDao.getCount(null, id, 1);  
  22.         news.setCommentSum(commentCount);  
  23.         if(!ValueWidget.isNullOrEmpty(news.getPic())){  
  24.             news.setPic(JSONPUtil.getPicPath(news.getPic()));  
  25.         }  
  26.         content = getJsonP(news, callback);  
  27.         AccessLog accessLog=logInto(request);  
  28.         accessLog.setDescription("手机端"+title+"详情,id:"+id);  
  29.         logSave(accessLog, request);  
  30.         return content;  
  31.     }  

 

 

(2)去掉callback

callback({"auth_code":"v39hXq"}) -->{"auth_code":"v39hXq"}

Java代码  

  1. /*** 
  2.      * callback({"auth_code":"v39hXq"}) -->{"auth_code":"v39hXq"} 
  3.      * @param input 
  4.      * @param callbackName 
  5.      * @return 
  6.      */  
  7.     public static String deleteCallback(String input,String callbackName){  
  8.         return input.replaceAll("^"+callbackName+"\\((.*\\})\\);?$", "$1");  
  9.     }  

 应用:

Java代码  

  1. /*** 
  2.      * convert json string to Map;e.g:{errorMessage=系统异常,请稍后再试!, id=, status=02, errorCode=error_default, method=} 
  3.      * @param jsonResult 
  4.      * @return 
  5.      * @throws UnsupportedEncodingException 
  6.      * @throws JSONException 
  7.      * @throws org.json.JSONException 
  8.      */  
  9.     public static Map<String, String> getMap(String jsonResult)  
  10.             throws UnsupportedEncodingException, JSONException,  
  11.             org.json.JSONException {  
  12.         if(ValueWidget.isNullOrEmpty(jsonResult)){  
  13.             return null;  
  14.         }  
  15.         //callback({"auth_code":"v39hXq"})  
  16.         jsonResult=deleteCallback(jsonResult, "callback");  
  17.         Map<String, String> resultMap =null;  
  18.         Map obj = (Map) JsonParser.parserRandomJsonFormat(jsonResult);  
  19.         if (ValueWidget.isNullOrEmpty(obj)) {  
  20.             return null;  
  21.         }  
  22.         List resultList = (List) obj.get("resultList");  
  23.         if(ValueWidget.isNullOrEmpty(resultList)){  
  24.             resultMap=obj;  
  25.         }else{  
  26.             resultMap= new HashMap<String, String>();  
  27.             for (int i = 0; i < resultList.size(); i++) {  
  28.                 Map mp_tmp = (Map) resultList.get(i);  
  29.                 parseMap(resultMap, mp_tmp);  
  30.             }  
  31.         }  
  32.           
  33.         return resultMap;  
  34.   
  35.     }  

 

参考:http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024993.html

时间: 2024-12-30 23:38:37

jsonp 常用util方法的相关文章

浅谈fastjson的常用使用方法_java

如下所示: package Demo; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Vector; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; imp

PHP抓取网页、解析HTML常用的方法总结

  这篇文章主要介绍了PHP抓取网页.解析HTML常用的方法总结,本文只是对可以实现这两个需求的方法作了总结,只介绍方法,不介绍如何实现,需要的朋友可以参考下 概述 爬虫是我们在做程序时经常会遇到的一种功能.PHP有许多开源的爬虫工具,如snoopy,这些开源的爬虫工具,通常能帮我们完成大部分功能,但是在某种情况下,我们需要自己实现一个爬虫,本篇文章对PHP实现爬虫的方式做个总结. PHP实现爬虫主要方法 1.file()函数 2.file_get_contents()函数 3.fopen()-

js正则表达式常用函数方法及简单应用

 前言   关于正则表达式,是前端学习的重点和难点.我在之前的一片文章重新拎一遍js的正则表达式中,重新带领大家温故了一下正则表达式.本文主要带领大家一起应用一些正则表达式,简单介绍一些正则表达式中常用的方法及对象,例如:test.exec.match.replace.search等等. 正则表达式对象的方法   1.test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式.如果存在则返回 true,否则就返回 false. 2.exec,用正则表达式模式在字符串中运行查找,

DIV+CSS网页布局常用的方法与技巧

css|技巧|网页 CSS布局常用的方法 float:none|left|right 取值: none:默认值.对象不飘浮 left:文本流向对象的右边 right:文本流向对象的左边 它是怎样工作的,看个一行两列的例子 xhtml代码: Example Source Code <div id="wrap"> <div id="column1">这里是第一列</div> <div id="column2&qu

CSS布局常用的方法和实例及一些问题

css|问题 1.CSS布局常用的方法:float : none | left | right 取值:none : 默认值.对象不飘浮 left : 文本流向对象的右边 right : 文本流向对象的左边 它是怎样工作的,看个一行两列的例子 xhtml: <div id="warp"> <div id="column1">这里是第一列</div> <div id="column2">这里是第二

实例讲解:DIV CSS网页布局常用的方法和技巧

css|技巧|网页 CSS布局常用的方法float:none|left|right 取值:none:默认值.对象不飘浮left:文本流向对象的右边right:文本流向对象的左边  它是怎样工作的,看个一行两列的例子 xhtml代码:<div id="wrap"> <div id="column1">这里是第一列</div> <div id="column2">这里是第二列</div>

ORACLE获取DDL的几种常用的方法

oracle ORACLE获取DDL的几种常用的方法   作者:刘颖博 时间:2004-2-26 mail:liuyingbo@126.com,请指正   转载请注明出处及作者   大体的分为三种方法: 一:可以通过toad.plsql develop等第三方工具进行导出DLL操作,用这种办法的好处在于操作简单方便,但需要安装,下面简单介绍一下用这两个工具获得DLL语句的操作.   1.首先是toad工具,可以到www.quest.com网站上下载 操作步骤的简要介绍如下: a.    启动to

asp常用数据库连接方法和技巧

技巧|数据|数据库|数据库连接 asp常用数据库连接方法和技巧转贴:snow 日期:2005-02-28 人气:19 购虚拟主机送U盘送鼠标送30G硬盘---企商在线老牌虚拟主机商 <% dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft ac

解决div列高度自适应的三种最常用的方法

解决div列高度自适的方法有很多种,这里介绍三种最常用的方法给大家(下面所有例子以父main,子divleft.divright为例). 1.利用"clear:both"背景填充(推荐!!!) 这是使用最广泛的一种做法,我一直都用此方法解决div列高度自适问题.三行二列布局,主要内容在右边,网页宽度780px,左列240px,右列540px. CSS代码: #main{width: 780px;margin: 0;background: url(bg.gif) #FFFFFF repe