对象生成JSON的形式

对象生成JSON的方式
/**
不好意思,今天发代码的时候没有注意写清楚,
一般服务器需要得到的内容都是封装成JSON对象的,我们向服务器发送数据包的时候也是一个JSON包,直接通过流的方式获取,因此可以不用写参数名称,
但是一般做项目的时候,如果用到JSON字符串的话,每个工程师去写JSON,那是一件很痛苦的事情,如果你让工程师去写对象,工程师比较愿意,直接new 一个
对象,传参数就行了,而不用去关心这个参数要生成什么格式,那个由对应的工程师去做数据处理。今天百度了很久,都没发现一个好的生成对应数据包的方法,
于是自己就写个这样的方法。这个方法的编写,同时感谢极客学院的一个视频,就是反射技术的讲解,通过此视频,让我更加深刻的了解到反射技术的任用,
如果让我自己去看理论,我要疯掉,毕竟我不是一个静下心来的人,年轻人谁没有过急躁,因此我看不下去文档,但是看代码我知道效果,有效果,我就慢慢的用,
然后知道怎么去实现它这个技术。废话太多了,下面就给大家讲讲反射技术怎么去让对象生成JSON数据包。
**/ 
//首先传递三个对象给到方法。这个方法是因为需要用到多格式的,所以三个对象,如果是单一的JSON可以不用三个对象。
public String getResult(Object ob,Object Top,Object TopBody){
		JSONObject jtop = new JSONObject();
		try {
			//通过这样的方式可以得到对象  例如: User u= new User();
                        Class c1 = Top.getClass();  
                       //得到对象的属性和方法
			Field[] fi = c1.getDeclaredFields();  
			for(int i = 1; i<fi.length;i++){  
				 fi[i].setAccessible(true);
                                  // 属性的名称 是getName()得到, 得到属性的值用fi[i].get(Top) 这个里面可以得到对应的属性值,也就是getName 的Value
                                 jtop.put(fi[i].getName(),  fi[i].get(Top));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JSONObject jt = new JSONObject();
		try {
			Class c1 = TopBody.getClass();  
			Field[] fi = c1.getDeclaredFields();  
			for(int i = 1; i<fi.length;i++){  
				 fi[i].setAccessible(true);  
				 jt.put(fi[i].getName(),  fi[i].get(TopBody));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		jtop.put("client_message", jt);
		
		JSONObject json = new JSONObject();//创建json格式的数据  
		try {
			Class c1 = ob.getClass();  
			Field[] fi = c1.getDeclaredFields();  
			for(int i = 1; i<fi.length;i++){  
				 fi[i].setAccessible(true);  
				 json.put(fi[i].getName(),  fi[i].get(ob));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		jtop.put("data",json);
                 // 最后返回一个Json数据包 。jtop.toString()
                String result = HttpRequest.sendPost(UserUrl, "message="+jtop.toString());
		return result;
	}