我有Java bean类,例如:
public class User implements Serializable{
protected String Name = null;
protected String Password = null;
// ...
}
我可以使用
轻松将其转换为org.json
对象
User u = new User();
u.setName("AAA");
u.setPassword("123");
JSONObject jo = new JSONObject(u);
是否可以将JSONObject
转换为Java bean类?
答案 0 :(得分:9)
现有的库实现了将JSON对象转换为Java bean的反射方法,称为Gson。
使用它可以将JSON文本(在代码中调用jo.toString()
的结果)转换回User
类型:
User user = new Gson().fromJson(jSONObjectAsString, User.class);
此库还实现了toJson()
方法,因此您应该可以在所有情况下将您对json.org实现的使用替换为Gson。
答案 1 :(得分:1)
使用json.org库没有内置方法可以做到这一点。
根据您的需要,您可以
fromJSONObject()
方法,使用JSONObject#has()
和JSONObject#get*()
获取所需的值并处理任何类型问题。JSONObject#names()
和反射的全局方法,用来自JSONObject的数据填充bean实例。这并不困难,但如果只需要将它与几个bean类一起使用就可能过于繁重。答案 2 :(得分:1)
public static Object toBean(JSONObject jobject, Object object) {
for (Field field : object.getClass.getDeclaredFields()) {
field.set(object, jobject.getString(field.getName()));
}
}
Call:
User user = (User) toBean(jo, new User());