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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/38238712/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 03:14:18  来源:igfitidea点击:

How to convert String value to Custom Model Object in Java?

javaandroidstringsqlitejava-opts

提问by Android Develeoper

I have one Model Object. In which, i have multiple values. I want to store this Values in SQLite. But data is large, so i want to store Direct Model object in databse. So i convert model Object to string and store it into database.

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

Now, Problem is that how to convert this String value to Model Object. If you have any idea, please share that with Me.

现在,问题是如何将此字符串值转换为模型对象。如果您有任何想法,请与我分享。

For example,

例如,

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

String person=p.toString();

Now How to get this "person" string back to Person"p" model object.

现在如何将这个“人”字符串返回到Personp”模型对象。

This is my code.

这是我的代码。

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

回答by Pankaj Kumar

You should use GSONor similar libs for this.

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



Store to DB

存储到数据库

For example If you use GSON

例如,如果您使用 GSON

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

Now store this personString to DB.

现在将此 personString 存储到 DB。



Read from DB

从数据库读取

Get back this object from database, read string from DB and convert it to object like below

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

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


For more information, read GSON - Gson Example

有关更多信息,请阅读GSON - Gson 示例

回答by Android Develeoper

Consider using a jsonstring representation of the Model Object. There are many java libraries like Hymanson, Gson etc., available to help you with serialization/deserialization part.

考虑使用模型对象的json字符串表示。有许多 Java 库,如 Hymanson、Gson 等,可用于帮助您进行序列化/反序列化部分。

Here's a sample code to do this in Hymanson

这是在 Hymanson 中执行此操作的示例代码

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

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


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

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

回答by Mark Shen

You can make Model Object serializable. You need to store the serialized object in SQLite. When you need it, you just get that serialized object from SOLite and deserialize it.

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