我想使用以字符串形式存储在数据库中的JSONObject (net.sf.json),并从此JSONObject设置和获取属性。我想获得存储在这个JSONObjects中的java对象(编译时未知类的)。我该怎么做呢?
// Let's say I have a POJO "User" with getters and setters
public static void main(String[] args)
{
User user = new User();
JSONObject jsonObject = new JSONObject();
jsonObject.put("user", user);
User u = getAttribute("user", jsonObject);
}
public static <T> T getAttribute(String key, JSONObject json)
{
Type typeOfT = new TypeToken<T>(){}.getType();
return new Gson().fromJson(json.toString(), typeOfT);
}这会产生错误:无法将com.google.gson.internal.LinkedTreeMap强制转换为用户
我也尝试过:
public static <T> T getAttribute(String key, JSONObject json, Class<T> type)
{
return new Gson().fromJson(json.toString(), type);
}有什么建议吗?
发布于 2015-01-23 21:43:13
您可以使用Gson google库将json对象转换为Java类运行时。Gson库有一个fromJson(String,className)方法。它有两个参数,第一个字符串包含您想要转换的json数据和第二个类名,最后返回的是Java类对象
发布于 2015-01-23 22:06:19
试试这个:
public static void main(String[] args){
User user = new User();
Gson gson = new Gson();
String json = gson.toJson(user);
User u = getAttribute(json);
}
public static <T> T getAttribute(String json, Class<T> type){
return new Gson().fromJson(json, type);
}我不确定,但这也应该可以工作- JSONObject jsonObject = new JSONObject(user);,而不是jsonObject.put("user", user);
https://stackoverflow.com/questions/28111127
复制相似问题