使用JsonResult返回json数据


  
	
	
	
  
  
  
    

Let AJAX change this text1

Let AJAX change this text2

 

import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.Arrays;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.opensymphony.xwork2.ActionSupport;

import com.jaeson.hibernatestudy.bean.Address;
import com.jaeson.hibernatestudy.bean.User;

@SuppressWarnings("all")
@Scope("prototype")
@Controller("jsonAction")
public class JSONAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		map.put("jaeson", new Address("海淀", 100, "1361"));
		map.put("chenzq", new Address("昌平", 101, "1352"));
		return SUCCESS;
	}
	
	/** 
	 * 在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码), 
	 * HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)的PrintWriter实例。这样就会 
	 * 造成中文乱码。而且设置编码时必须在调用getWriter之前设置,不然是无效的。 
	 */  
	public void writeJSON() throws IOException{
		
		HttpServletResponse response=ServletActionContext.getResponse();
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		/*String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"张三\",\"say\":\"Hello , i am a action to print a json!\",\"password\":\"JSON\"},\"success\":true}";
		out.println(jsonString);
		out.flush();
		out.close();*/
		Map map = new HashMap();
		User user1 = new User();
		user1.setId("1001");
		user1.setUserName("chenzq");
		user1.setAddress(new Address("beijing", 100021, "134"));
		User user2 = new User();
		user2.setId("1002");
		user2.setUserName("jaesonchen");
		user2.setAddress(new Address("shanghai", 200021, "133"));
		map.put("user1", user1);
		map.put("user2", user2);
		
		JSONObject json = new JSONObject();
		json.accumulate("map", map);
		//JSONObject json = JSONObject.fromObject(map);
		out.println(json.toString());
		out.flush();
		out.close();
	}
	
	private String fieldString = "String value";
	private int fieldInt = 100;
	private double fieldDouble = 99.1;
	private boolean fieldBoolean = false;
	private int[] arrayInt = {101, 102, 103};
	private List list = Arrays.asList("Buenos Aires", "Córdoba La", "La Plata");
	private Map map = new HashMap();
	//field without getter method 不会被序列化
	private String fieldNoGetter = "NoGetter value";
	public String getFieldString() {
		return fieldString;
	}
	public int getFieldInt() {
		return fieldInt;
	}
	public double getFieldDouble() {
		return fieldDouble;
	}
	public boolean isFieldBoolean() {
		return fieldBoolean;
	}
	public int[] getArrayInt() {
		return arrayInt;
 	}
 	public List getList() {
  		return list;
 	}
 	public Map getMap() {
  		return map;
 	}
 	/**
 	public String getFieldNoGetter() {
  		return fieldNoGetter;
 	}*/
}

 

 

不使用JsonResult的配置:

 

使用JsonResult的配置:

 


   
     
      
      text/html
        
      
      
      
      
      
        
      
    
  
 

 

 

你可能感兴趣的:(struts2)