如何在Java中将String值转换为自定义模型对象?

时间:2016-07-07 06:23:10

标签: java android string sqlite java-opts

我有一个模型对象。其中,我有多个值。我想在SQLite中存储此值。但是数据很大,所以我想存储Direct Model对象 在数据库中。所以我将模型对象转换为字符串并将其存储到数据库中。

现在,问题是如何将此String值转换为Model Object。 如果您有任何想法,请与我分享。

例如,

Person p = new Person();
p.setname("xyz");
p.setage("18");`

String person=p.toString();

现在如何将此“人”字符串转回Personp”模型对象。

这是我的代码。

ContentValues values = new ContentValues();
    String favorite_id = UUID.randomUUID().toString();
    values.put(EMuseumLocalData.KEY_FAVORITE_EXHIBITS_ID, favorite_id);
    values.put(EMuseumLocalData.KEY_EXHIBIT_SUBCATEGORY_ITEM_ID, Integer.parseInt(categoryByCustomerList.get(position).getSubCategoryItemID()));
    try {
        Gson gson = new Gson();
        String personString = gson.toJson(getAllCategory.get(position).toString());
        values.put(EMuseumLocalData.KEY_EXHIBIT_SUBCATEGORY_ITEM_DATA, personString);

        Gson gson1 = new Gson();
        CategoryByCustomer categoryByCustomer = gson1.fromJson(personString, categoryByCustomer.getName());
    } catch (JSONException e) {
        e.printStackTrace();
    }

3 个答案:

答案 0 :(得分:12)

您应该使用GSON或类似的库。

存储到数据库

例如,如果您使用GSON

Person p = new Person();
p.setname("xyz");
p.setage("18");
Gson gson = new Gson();
String personString = gson.toJson(p);

现在将此personString存储到DB。

从数据库读取

从数据库中取回此对象,从DB读取字符串并将其转换为如下所示的对象

String personStringFromDB = READ_LOGIC_OF_DB;
Gson gson = new Gson();
Person p = gson.fromJson(personStringFromDB, Person.class);

有关详情,请参阅GSON - Gson Example

答案 1 :(得分:0)

考虑使用Model对象的 json 字符串表示。有很多像Jackson,Gson等Java库,可以帮助你进行序列化/反序列化。

以下是在Jackson中执行此操作的示例代码

//For conversion of Person object(person) to json String:

String personJsonString = new com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(person);


//For conversion of json String back to Person object(person)

Person person = new com.fasterxml.jackson.databind.ObjectMapper().readValue(personJsonString, Person.class);

答案 2 :(得分:0)

您可以使模型对象可序列化。您需要在SQLite中存储序列化对象。当您需要它时,您只需从SOLite获取该序列化对象并对其进行反序列化。