将json对象转换为java对象。未知的课程

时间:2015-01-23 13:35:27

标签: java json generics gson

我想在数据库中使用存储为字符串的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);
}

任何提示?

2 个答案:

答案 0 :(得分:0)

您可以使用Gson google库将json对象转换为Java类运行时。 Gson库有一个来自Json(String,className)的方法。它取2参数第一个String,它包含你要转换的json数据和第二个类,最后它返回Java类Object

答案 1 :(得分:0)

试试这个:

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);

相关问题