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

相关文章
|
1月前
|
JSON 前端开发 JavaScript
|
6月前
40dwr - util.js 功能(setValue)
40dwr - util.js 功能(setValue)
22 0
|
7月前
|
XML JSON 前端开发
【Java】数据交换 Json 和 异步请求 Ajax
JSON: JavaScript Object Notation(JavaScript 对象标记法)。 JSON 是一种存储和交换数据的语法。 JSON 是通过 JavaScript 对象标记法书写的文本。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 (String) JSON易于阅读和编写的文本形式表示数据 JSON数据使用键值对的方式进行组织,并且可以包含数组、对象和简单的数据类型(例如字符串、数字、布尔值和null)
|
9月前
|
Java
JAVA Http的Post请求传参
JAVA Http的Post请求传参
172 0
|
JSON Java 数据格式
JAVA获取GET和POST请求参数
JAVA获取GET和POST请求参数
1831 0
|
11月前
java_回调函数Callback
分为了三种回调函数,从简单到难,也挺好理解
99 0
|
前端开发 JavaScript Java
Java 和Ajax的简单结合
在做用户登陆和注册页面时,可以通过事件在js里面写ajax和后台异步传输,返回所需要的数据。 比如在写注册,当用户离开用户名的文本框时候,可以通过ajax引擎访问数据库查看这个命名是否合法,并且将信息返还给用户。
139 0
Java 和Ajax的简单结合
|
存储 XML JSON
JavaScript相关面试题4:1.ajax、axios、fetch区别;2.Object与Map区别
使用场景 ●如果只需要简单的存储key-value的数据,并且key不需要存储复杂类型的,直接用对象 ●如果该对象必须通过JSON转换的,则只能用对象,目前暂不支持Map ●map的阅读性更好,所有操作都是通过api形式去调用,更有编程体验
318 0
|
JSON Java 数据格式
Java 基于原生HttpURLConnection ,调用GET 和 POST请求 工具类
Java 基于原生HttpURLConnection ,调用GET 和 POST请求 工具类
329 0
|
Java
java中callback
1。首先回调方法的概念与“构造方法”的概念是不一样的,它不是指java中某个具有特殊意义或用途的方法。
115 0