• java 返回 json格式


    package net.joystart.common.controller;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletResponse;
    
    import net.joystart.common.util.ConstantUtil;
    import net.joystart.common.util.MessageResult;
    import net.joystart.common.util.date.DateSerializer;
    import net.joystart.common.util.date.DateToStringSerializer;
    import net.joystart.common.util.date.DateToStringYYYYMMDDSerializer;
    import net.joystart.common.util.gsonAdapter.NullStringToEmptyAdapterFactory;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.propertyeditors.CustomDateEditor;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.WebDataBinder;
    import org.springframework.web.bind.annotation.InitBinder;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonSerializer;
    import com.google.gson.TypeAdapter;
    import com.google.gson.reflect.TypeToken;
    import com.google.gson.stream.JsonWriter;
    
    /**
     * 
     * @author yang yanqing
     * @date 2016年7月7日
     * BaseController 基础控制器
     */
    @Controller
    public class BaseController {
    	
    	protected Logger logger = LoggerFactory.getLogger(this.getClass());
    	
    	@Deprecated
    	protected int pageSize = 20;
    	@Deprecated
    	protected int pageNumber = 1;
    	
    	public String toJson(Object obj){
    		 GsonBuilder gb = new GsonBuilder();
    	     gb.registerTypeAdapter(java.util.Date.class, new DateToStringYYYYMMDDSerializer());
    	     Gson gson = gb.create();
    		return gson.toJson(obj);
    	}
    	
    	public void out(HttpServletResponse response,Object result){
    		try {
                //浏览器用utf8来解析返回的数据  
    			response.setHeader("Content-type", "text/html;charset=UTF-8");  
    			//servlet用UTF-8转码,而不是用默认的ISO8859  
    			response.setCharacterEncoding(ConstantUtil.UTF_CODE);  
    			PrintWriter writer = response.getWriter();
    			GsonBuilder gb = new GsonBuilder();
    		    gb.registerTypeAdapter(java.util.Date.class, new DateSerializer()).setDateFormat(DateFormat.LONG);
    		    Gson gson = gb.create();
    			writer.print(gson.toJson(result) );
    		} catch (IOException e) {
    			
    			e.printStackTrace();
    		}
    		finally{
    			
    		}
    	}
    	public void outEd(HttpServletResponse response,Object result){
    		try {
                //浏览器用utf8来解析返回的数据  
    			response.setHeader("Content-type", "application/json;charset=UTF-8"); 
    			response.setContentType("application/json;charset=UTF-8");
    			//servlet用UTF-8转码,而不是用默认的ISO8859  
    			response.setCharacterEncoding(ConstantUtil.UTF_CODE);  
    			PrintWriter writer = response.getWriter();
    			GsonBuilder gb = new GsonBuilder();
    		    gb.registerTypeAdapter(java.util.Date.class, new DateSerializer()).setDateFormat(DateFormat.LONG);
    		    Gson gson = gb.create();
    		    System.out.println(gson.toJson(result));
    			writer.print(gson.toJson(result));
    		} catch (IOException e) {
    			
    			e.printStackTrace();
    		}
    		finally{
    			
    		}
    	}
    	
    	public void out(HttpServletResponse response,Map messageMap){
    		try {
                //浏览器用utf8来解析返回的数据  
    			response.setHeader("Content-type", "text/html;charset=UTF-8");  
    			//servlet用UTF-8转码,而不是用默认的ISO8859  
    			response.setCharacterEncoding(ConstantUtil.UTF_CODE);  
    			PrintWriter writer = response.getWriter();
    			 GsonBuilder gb = new GsonBuilder();
    		     gb.registerTypeAdapter(java.util.Date.class, new DateSerializer()).setDateFormat(DateFormat.LONG);
    		     Gson gson = gb.create();
    			writer.print(gson.toJson(messageMap) );
    		} catch (IOException e) {
    			
    			e.printStackTrace();
    		}finally{
    			
    		}
    	}
    	
    	public void webOut(HttpServletResponse response,Map messageMap){
    		try {
                //浏览器用utf8来解析返回的数据  
    			response.setHeader("Content-type", "text/html;charset=UTF-8");  
    			//servlet用UTF-8转码,而不是用默认的ISO8859  
    			response.setCharacterEncoding(ConstantUtil.UTF_CODE);  
    			PrintWriter writer = response.getWriter();
    			 GsonBuilder gb = new GsonBuilder();
    		     //gb.registerTypeAdapter(java.util.Date.class, new DateSerializer()).setDateFormat(DateFormat.LONG);
    		     gb.registerTypeAdapter(java.util.Date.class, new DateToStringSerializer());
    		     Gson gson = gb.create();
    			writer.print(gson.toJson(messageMap) );
    		} catch (IOException e) {
    			
    			e.printStackTrace();
    		}finally{
    			
    		}
    	}
    	
    	public void webOut(HttpServletResponse response,Object result){
    		try {
                //浏览器用utf8来解析返回的数据  
    			response.setHeader("Content-type", "text/html;charset=UTF-8");  
    			//servlet用UTF-8转码,而不是用默认的ISO8859  
    			response.setCharacterEncoding(ConstantUtil.UTF_CODE);  
    			PrintWriter writer = response.getWriter();
    			 GsonBuilder gb = new GsonBuilder();
    		     gb.registerTypeAdapter(java.util.Date.class, new DateToStringSerializer());
    		     Gson gson = gb.create();
    			writer.print(gson.toJson(result) );
    		} catch (IOException e) {
    			
    			e.printStackTrace();
    		}finally{
    			
    		}
    	}
    	
    	/**
    	 * 对象属性值为null时(只支持String,Integer类型),json中显示该属性,并将该属性值显示为""
    	 * @param response
    	 * @param result
    	 */
    	@SuppressWarnings({ "unchecked", "rawtypes" })
    	public void outWithNull(HttpServletResponse response,MessageResult result){
    		try {
                //浏览器用utf8来解析返回的数据  
    			response.setHeader("Content-type", "text/html;charset=UTF-8");  
    			//servlet用UTF-8转码,而不是用默认的ISO8859  
    			response.setCharacterEncoding("UTF-8");  
    			JsonWriter out = new JsonWriter(response.getWriter());
    			 GsonBuilder gb = new GsonBuilder();
    		     gb.registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()).registerTypeAdapter(java.util.Date.class, new DateSerializer()).setDateFormat(DateFormat.LONG);
    		     Gson gson = gb.create();
    //		     Gson g = new GsonBuilder().serializeNulls().create();
    		     TypeAdapter< MessageResult > adapter = gson.getAdapter(TypeToken.get(MessageResult.class));
    			((TypeAdapter) adapter).write(out, result);
    		} catch (IOException e) {
    			
    			e.printStackTrace();
    		}finally{
    			
    		}
    	}
    	
    	@InitBinder  
    	public void initBinder(WebDataBinder binder) {  
    		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  
    		dateFormat.setLenient(false);  
    		binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); 
    	}
    	
    	public int getPageSize() {
    		return pageSize;
    	}
    
    	public void setPageSize(int pageSize) {
    		this.pageSize = pageSize;
    	}
    
    	public int getPageNumber() {
    		return pageNumber;
    	}
    
    	public void setPageNumber(int pageNumber) {
    		this.pageNumber = pageNumber;
    	}
    
    }
    
  • 相关阅读:
    NOIP 2012 文化之旅
    史上最全的各种C++ STL容器全解析
    详解C++ STL map 容器
    详解C++ STL priority_queue 容器
    浅谈C++ STL stack 容器
    浅谈C++ STL queue 容器
    浅谈C++ STL vector 容器
    CF1185F Two Pizzas
    浅谈C++ STL deque 容器
    详解C++ STL multiset 容器
  • 原文地址:https://www.cnblogs.com/cuijinlong/p/7524549.html
Copyright © 2020-2023  润新知