JSONARRAY

json array:

public ActionForward findEmpByDepid(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// TODO Auto-generated method stub
		String depid=request.getParameter("depid");
		List<Emp> list=empService.findByDepId(Integer.parseInt(depid));
		JsonConfig config=new JsonConfig();
		
		config.registerJsonValueProcessor(Date.class,new JsonValueProcessor() {
			
			public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
				// TODO Auto-generated method stub
				SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
				return sd.format((Date)arg1);
			}
			
			public Object processArrayValue(Object arg0, JsonConfig arg1) {
				// TODO Auto-generated method stub
				return null;
			}
		});
		//忽略属性
		config.setExcludes(new String[]{"dep"});
		
		JSONArray arr=JSONArray.fromObject(list,config);
	
		response.getWriter().print(arr);
		return null;
	}
 
public ActionForward updateEmp(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String json=request.getParameter("json");
		//将字符串转换成对象
		JSONObject obj=JSONObject.fromObject(json);
		//将JsonObject转换成pojo
		Emp emp=(Emp) JSONObject.toBean(obj,Emp.class);
		
		int depid=obj.getInt("depid");
		
		try {
			empService.update(emp, depid);
			response.getWriter().print("{result:true}");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			response.getWriter().print("{result:false}");
		}
		return null;
	}
 
 
/**
	 * xml 优点:描述数据比较准确,缺点:数据量大
	 * json 优点:数据量小,
	 * 
	 * json的序列化和反序列化
	 * json->java对象	反序列化
	 * java->json 序列化
	 * json的语法规则
	 * 
	 * 
	 * 
	 * 单一对象
	 * {属性1:值1,属性2:值2}
	 * 
	 * 数组对象 (重复对象)
	 * [{属性1:值1,属性2:值2},{属性1:值1,属性2:值2}]
	 * 数组不同对象
	 * {对象名1:{属性1:值1,属性2:值2},对象名2:{属性3:值3,属性4:值4}}
	 * 
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//		String str="{name:'张三',money:100}";
//		String str="[{name:'张三',money:100},{name:'李四',money:200}]";
//		String str="{stu:{stuname:'张三',stumoney:100},tea:{teaname:'李四',teamoney:200}}";
		
		//  {stu:{stuname:'张三',stumoney:100},stu:{stuname:'张三',stumoney:100},result:true}
		
		
		
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		String p=request.getParameter("p");
		System.out.println(p);
		
		//设置反序列化的日期转换  字符串变对象
		JSONUtils.getMorpherRegistry().registerMorpher(
				new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"})
			);  
		
		
		/*
		 * json的序列化
		 * 对象转换成字符串
		 * 
		 * 
		 */
		Student stu1=new Student("李四", new Date(), 200);
		//获得json的配置
		JsonConfig config=new JsonConfig();
		//注册一个json对象的转换器,如果转换Date类型,调用该转换器
		config.registerJsonValueProcessor(Date.class,new JsonValueProcessor() {
			public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
				// TODO Auto-generated method stub
				if("birthday".equals(arg0)){
					SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					Date d=(Date) arg1;
					return sd.format(d);
				}
				return null;
			}
			public Object processArrayValue(Object arg0, JsonConfig arg1) {
				// TODO Auto-generated method stub
				return null;
			}
		});
		
		JSONObject jsonObject=JSONObject.fromObject(stu1,config);
		//json字符串
		System.out.println(jsonObject);
		
		
		
		
		List list1=new ArrayList();
		JSONArray arr1=JSONArray.fromObject(list1);
		//json字符串
		System.out.println(arr1);
		
		
		
		
		
		
		
		//使用json-lib进行对象的反序列化
		//转换日期 ,
		
		
		
		//将字符串转换成jsonObject对象
		//单一对象
//		JSONObject obj=JSONObject.fromObject(p);
//		//将jsonObject转换成java对象
//		Student stu=(Student) JSONObject.toBean(obj,Student.class);
//		System.out.println(stu.getName());
//		System.out.println(stu.getMoney());
//		System.out.println(stu.getBirthday());
		
		
		JSONArray arr=JSONArray.fromObject(p);
		JsonConfig config1=new JsonConfig();
		List<Student> list= JSONArray.toList(arr,Student.class);
		for (Student student : list) {
			System.out.println(student.getName());
			System.out.println(student.getBirthday());
		}
		
	}

}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值