使用org.JSON包将JSON对象转换为Javabean



我有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转换为Javabean类的方法吗?

有一个现有的库实现了将JSON对象转换为Javabean的反射方法,称为Gson。

使用它,您可以将JSON文本(代码中调用jo.toString()的结果)转换回User类型:

User user = new Gson().fromJson(jSONObjectAsString, User.class);

这个库还实现了一个toJson()方法,因此您应该可以在所有情况下用Gson替换对json.org实现的使用。

使用json.org库没有内置的方法可以做到这一点。

根据您的需要,您可以选择

  1. 为每个bean编写一个fromJSONObject()方法,该方法使用JSONObject#has()JSONObject#get*()来获得所需的值并处理任何类型的问题
  2. 编写一个全局方法,使用JSONObject#names()和反射用JSONObject中的数据填充bean实例。这并不困难,但如果您只需要将其与几个bean类一起使用,则可能会过于繁重
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());

最新更新