当前位置:首页 > 开发 > 编程语言 > Json > 正文

jsonp 常用util方法

发表于: 2015-07-19   作者:hw1287789687   来源:转载   浏览:
摘要: jsonp 常用java方法 (1)以jsonp的形式返回:函数名(json字符串) /*** * 用于jsonp调用 * @param map : 用于构造json数据 * @param callback : 回调的javascript方法名 * @param filters : <code>SimpleBeanPropertyFilter theFilt

jsonp 常用java方法

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

/***
	 * 用于jsonp调用
	 * @param map : 用于构造json数据
	 * @param callback : 回调的javascript方法名
	 * @param filters : <code>SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter
				.serializeAllExcept("content");
		FilterProvider filters = new SimpleFilterProvider().addFilter(
				Constant2.SIMPLEFILTER_JACKSON_PAPERNEWS, theFilter);</code>
	 * @return : js函数名(json字符串)
	 */
	public static String getJsonP(Object map,String callback,FilterProvider filters)
	{
		if(ValueWidget.isNullOrEmpty(map)){
			return null;
		}
		String content = null;
		if(map instanceof String){
			content=(String)map;
		}else{
		ObjectMapper mapper = getObjectMapper();
		
		ObjectWriter writer=null;
		try {
			if(filters!=null){
				writer=mapper.writer(filters);
			}else{
				writer=mapper.writer();
			}
			content=writer.writeValueAsString(map);
			logger.info(content);
		} catch (JsonGenerationException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		}
		if(ValueWidget.isNullOrEmpty(callback)){
			return content;
		}
		return callback+"("+content+");";
	}

 应用:

@ResponseBody
	@RequestMapping(value = "/json_detail", produces = SystemHWUtil.RESPONSE_CONTENTTYPE_JSON_UTF)
	public String jsonDetail(Model model, int id/*新闻的id*/,
			PaperNewsView view, HttpSession session,
			HttpServletRequest request, String callback) throws IOException {
		init(request);
		PaperNews news=(PaperNews) getDao().get(id);
		String content;
		/*int comment_type=0;
		if(type==2){//新闻
			comment_type=Constant2.COMMENT_TARGET_TYPE_NEWS;
		}else if(type==1){
			
		}*/
		String title=null;
		if(news.getType()==Constant2.TYPE_NEWS){
			title="新闻";
		}else{
			title="报料";
		}
		long commentCount=this.newsCommentDao.getCount(null, id, 1);
		news.setCommentSum(commentCount);
		if(!ValueWidget.isNullOrEmpty(news.getPic())){
			news.setPic(JSONPUtil.getPicPath(news.getPic()));
		}
		content = getJsonP(news, callback);
		AccessLog accessLog=logInto(request);
		accessLog.setDescription("手机端"+title+"详情,id:"+id);
		logSave(accessLog, request);
		return content;
	}

 

 

(2)去掉callback

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

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

 应用:

/***
	 * convert json string to Map;e.g:{errorMessage=系统异常,请稍后再试!, id=, status=02, errorCode=error_default, method=}
	 * @param jsonResult
	 * @return
	 * @throws UnsupportedEncodingException
	 * @throws JSONException
	 * @throws org.json.JSONException
	 */
	public static Map<String, String> getMap(String jsonResult)
			throws UnsupportedEncodingException, JSONException,
			org.json.JSONException {
		if(ValueWidget.isNullOrEmpty(jsonResult)){
			return null;
		}
		//callback({"auth_code":"v39hXq"})
		jsonResult=deleteCallback(jsonResult, "callback");
		Map<String, String> resultMap =null;
		Map obj = (Map) JsonParser.parserRandomJsonFormat(jsonResult);
		if (ValueWidget.isNullOrEmpty(obj)) {
			return null;
		}
		List resultList = (List) obj.get("resultList");
		if(ValueWidget.isNullOrEmpty(resultList)){
			resultMap=obj;
		}else{
			resultMap= new HashMap<String, String>();
			for (int i = 0; i < resultList.size(); i++) {
				Map mp_tmp = (Map) resultList.get(i);
				parseMap(resultMap, mp_tmp);
			}
		}
		
		return resultMap;

	}

 

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

jsonp 常用util方法

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素
2 Util
Util最新代码更新说明   离上一篇又过去了一个月,时间比较紧,后续估计会更紧,所以这次将放出更
function handleResponse(response) { alert("You’re at IP address " + response.ip + ", which i
4 jsonp
一、JavaScript 远程web Target.ashx public class Target : IHttpHandler { public void ProcessRe
5 jsonp
转自:http://www.cnblogs.com/lemontea/archive/2012/12/11/2812268.html jsonp详解 json相信大家
1 eclipse 常用方法 1.0 eclipse智能感知设置 Windows->Preferences->Java->Editor->Co
$.ajax({type: "get", async: false, url: "http://192.168.191.2:8080/server/userfunc/list.do",
前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实
简介 Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)
觉得有用转的,源地址: http://hi.baidu.com/l4yn3/item/0a2b8ed3734921362b35c7e0 JSONP即JSON wi
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号