首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将json对象转换为java对象。未知类

将json对象转换为java对象。未知类
EN

Stack Overflow用户
提问于 2015-01-23 21:35:27
回答 2查看 1.2K关注 0票数 1

我想使用以字符串形式存储在数据库中的JSONObject (net.sf.json),并从此JSONObject设置和获取属性。我想获得存储在这个JSONObjects中的java对象(编译时未知类的)。我该怎么做呢?

代码语言:javascript
复制
// 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强制转换为用户

我也尝试过:

代码语言:javascript
复制
public static <T> T getAttribute(String key, JSONObject json, Class<T> type)
{
    return new Gson().fromJson(json.toString(), type);
}

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2015-01-23 21:43:13

您可以使用Gson google库将json对象转换为Java类运行时。Gson库有一个fromJson(String,className)方法。它有两个参数,第一个字符串包含您想要转换的json数据和第二个类名,最后返回的是Java类对象

票数 0
EN

Stack Overflow用户

发布于 2015-01-23 22:06:19

试试这个:

代码语言:javascript
复制
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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28111127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档