package com.gson;
import java.lang.reflect.Field;
import com.bean.Student;
/**
*
* @author GSON的原理
*/
public class MyGson {
public String toJson(Object object) throws IllegalArgumentException,
IllegalAccessException {
StringBuffer sb = new StringBuffer();
sb.append("{");
//《1》获取字节码
Class clazz = object.getClass();
//《2》获取属性对象
Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
field.setAccessible(true);
//《3》获取属性名
String fieldName = field.getName();
System.out.println(fieldName);
//《4》获取属性值
String fieldValue = (String) field.get(object);
System.out.println(fieldValue);
sb.append("\"" + fieldName + "\":\"" + fieldValue + "\"");
if (i != fields.length - 1)
sb.append(",");
}
sb.append("}");
return sb.toString();
}
public static void main(String[] args) throws IllegalArgumentException,
IllegalAccessException {
MyGson myGson = new MyGson();
System.out.println(myGson.toJson(new Student("john", "hahahhah")));
}
}
Student.java
package com.bean;
public class Student {
private String name;
private String sign;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public Student(String name, String sign) {
super();
this.name = name;
this.sign = sign;
}
}