簡體   English   中英

將json對象轉換為java對象。 未知類別

[英]Convert json object to java object. Unknown class

我想使用以字符串形式存儲在數據庫中的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);
}

有小費嗎?

您可以使用Gson谷歌庫將json對象轉換為Java類運行時。 Gson庫具有fromJson(String,className)的方法。 它帶有2個參數,第一個包含json數據的String和要轉換的第二個Name,最后返回Java類Object

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM