如何将javabean转换为post param string?

Yin*_* Yi 2 java

例:

public class User{
    private String name;
    private String age;
    private String address;
    .... set and get methods....
}

User user = new User();
user.setName("albert");
user.setAge("22");
Run Code Online (Sandbox Code Playgroud)

我想将用户对象转换为此字符串
name=albert&address=&age=22
因为我new URL()用来发布此字符串.

我有很多其他对象转换为像这个字符串,所以我想要一个工具方法
有什么好办法吗?

提前致谢

jlu*_*etu 5

对任何对象类型使用反射:

import java.lang.reflect.Field;

public class ObjectToPostStringbyReflection {


    public String getPostParamString(Object o) throws IllegalArgumentException, IllegalAccessException{
        Class<? extends Object> clazz = o.getClass();
        StringBuilder sb = new StringBuilder();
        for(Field f : clazz.getDeclaredFields()){
            f.setAccessible(true);
            if(!sb.toString().isEmpty()){
                sb.append("&");
            }
            sb.append(f.getName())
                .append("=")
                .append(f.get(o));
        }
        return sb.toString();
    }

    /**
     * @param args
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
        // TODO Auto-generated method stub
        User user = new User();
        user.setName("John");
        user.setAddress("address");
        user.setAge("18");
        ObjectToPostStringbyReflection reflector = new ObjectToPostStringbyReflection();
        System.out.println(reflector.getPostParamString(user));
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:name = John&age = 18&address = address