示例:
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");
我希望将用户对象转换为此字符串
name=albert&address=&age=22
因为我使用new URL()
发布此字符串。
我有很多其他对象要转换为像这个字符串,所以我想要一个工具方法
有什么好办法吗?
提前致谢
答案 0 :(得分: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));
}
}
结果: name = John&amp; age = 18&amp; address = address
答案 1 :(得分:1)
您可以尝试找到一个可以为您执行此操作的框架(例如Spring),或者您可以咬紧牙关并编写自己的方法:
public String toPost() {
StringBuilder sb = new StringBuilder();
sb.append("name=")
.append(this.name)
.append("&address=")
.append(this.address)
.append("&age=")
.append(this.age);
return sb.toString();
}
答案 2 :(得分:0)
一个简单的方法是:
public class user{
private String name;
private String age;
private String address;
.... set and get methods....
public String toText() {
return "name="+this.name+"&adress="+this.adress+"&age="+this.age;
}
}
如果效果很重要,您可以使用StringBuilder
答案 3 :(得分:0)
String postString = "name="+user.name+"&address="+user.address+"&age="+user.age;
没有。这样做的方法。它可能是你最好选择的!
答案 4 :(得分:0)
如果要将对象转换为通过查询String by Rest传递。它是不可能的,但如果你只想在使用toString()方法时返回该字符串。你需要覆盖你的类中的toString方法。 像那样:
@Override
public String toString() {
return "name="+ name + "&address=" +adress+ "&age=" +age+
}