使用org.json包将JSON对象转换为Java bean

时间:2014-10-05 15:50:00

标签: java json

我有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类?

3 个答案:

答案 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库没有内置方法可以做到这一点。

根据您的需要,您可以

  1. 为每个bean编写fromJSONObject()方法,使用JSONObject#has()JSONObject#get*()获取所需的值并处理任何类型问题。
  2. 编写一个使用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());