JAVA - JSON

本文介绍了JSON格式数据与Java对象之间的序列化和反序列化的具体实现方法,包括单一对象、数组对象及不同对象的处理方式,并提供了详细的代码示例。
/**
	 * 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);
		



JAVA- json转换:



package com.genomics.core;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JSONObjectToBean {

	/**
	 * 
	 * @param obj 
	 * @param c
	 * @return
	 */
	public static Object convert(JSONObject obj,Class<?> c){
		
		
		Object returnObject=null;
		try {
			returnObject = c.newInstance();
		} catch (InstantiationException e1) {
			e1.printStackTrace();
		} catch (IllegalAccessException e1) {
			e1.printStackTrace();
		}
		
		Field[] fields=c.getDeclaredFields();
		
		for(Field f:fields){
			
			try{
				
				System.out.println(f.getName()+"-----------"+f.getType());
				
				ReflectUtil.setValue(f, returnObject, new Object[]{LangUtil.formatObject(f.getType(), obj.getString(f.getName()))});
				
			
			}catch(Exception e){
				
			}
			
		}
		
		return returnObject;
		
	}	
	
	
	
   public static List convertList(JSONArray array,Class<?> c){
		
		
		
		
		List list =new ArrayList();
		
		for(int i=0;i<array.size();i++){
			
			Object returnObject=null;
			try {
				returnObject = c.newInstance();
			} catch (InstantiationException e1) {
				e1.printStackTrace();
			} catch (IllegalAccessException e1) {
				e1.printStackTrace();
			}
			
			Field[] fields=c.getDeclaredFields();
			
			JSONObject obj=(JSONObject)array.get(i);
			
			for(Field f:fields){
				
				try{
					
					
					ReflectUtil.setValue(f, returnObject, new Object[]{LangUtil.formatObject(f.getType(), obj.getString(f.getName()))});
					
				
				}catch(Exception e){
					
					
				}
				
			}
			
			list.add(returnObject);
			
			
		}
		
		
		return list;
		
	}
   public static List convertList(JSONArray array,Class<?> c,boolean StringNull2Blank){
		
		
		
		
		List list =new ArrayList();
		
		for(int i=0;i<array.size();i++){
			
			Object returnObject=null;
			try {
				returnObject = c.newInstance();
			} catch (InstantiationException e1) {
				e1.printStackTrace();
			} catch (IllegalAccessException e1) {
				e1.printStackTrace();
			}
			
			Field[] fields=c.getDeclaredFields();
			
			JSONObject obj=(JSONObject)array.get(i);
			
			for(Field f:fields){
				
				try{
					
					
					ReflectUtil.setValue(f, returnObject, new Object[]{LangUtil.formatObject(f.getType(), obj.getString(f.getName()),StringNull2Blank)});
					
				
				}catch(Exception e){
					
					
				}
				
			}
			
			list.add(returnObject);
			
			
		}
		
		
		return list;
		
	}

}


。。。




...

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值