【问题标题】:How to convert String value to Custom Model Object in Java?如何在 Java 中将字符串值转换为自定义模型对象?
【发布时间】:2023-03-18 11:24:01
【问题描述】:

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

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

例如,

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

【问题讨论】:

  • 将您的人对象转换为 Json 对象,然后将 Json 对象转换为字符串......它的工作人员

标签: java android string sqlite java-opts


【解决方案1】:

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

这是在 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】:

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

    【讨论】:

    • 如何将这个Serializable对象存入SQLite?
    • 可序列化对象是一个字符串
    【解决方案3】:

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


    存储到数据库

    例如如果你使用GSON

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

    现在将此 personString 存储到 DB。


    从数据库中读取

    从数据库中取回该对象,从数据库中读取字符串并将其转换为如下对象

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

    欲了解更多信息,请阅读GSON - Gson Example

    【讨论】:

    • 这一行的json是什么Person p = gson.fromJson(json, Person.class);
    • 更新了该行。那是personStringFromDB
    • 如果我这样做了,那么我在第二行Gson gson1 = new Gson(); CategoryByCustomer categoryByCustomer = gson1.fromJson(personString, CategoryByCustomer.class); 上收到此错误Gson gson1 = new Gson(); CategoryByCustomer categoryByCustomer = gson1.fromJson(personString, CategoryByCustomer.class);
    • 分享您的代码。转换后你在编辑字符串吗?
    • 不要使用 toString() 你的对象。问题在于'String personString = gson.toJson(getAllCategory.get(position).toString());'。而不是这样做,只需使用 'String personString = gson.toJson(getAllCategory.get(position));'
    猜你喜欢
    • 2013-05-08
    • 2011-05-02
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多