如何在 Android 中保存自定义 Java 对象?
How to save a custom Java Object in Android?
你能帮帮我吗?我正在尝试将我的 Java 对象(客户)保存在 android 中,目前我正在学习一本书。
这就是我得到的,我有一个具有字符串和 UUID 的客户对象。有了这些,我可以通过使用 JSON 进行转换来成功保存它们。我的问题是我想为每个客户添加一个对象数组列表,其中包含(双精度和两个字符串)。当我将客户对象转换为 json 时,如何保存此 ArrayList 并在 JSON 对象中检索它。
我研究了一下,但不是很了解。我找到了 GSON,但我不确定这是否是我需要的,也不知道如何将这个库添加到我的项目中。另一个是我可以将 JSONArray 放入 JSON 对象中吗?这是我发现但不确定的两个潜在解决方案。我试图通过文件而不是 SQLite 来保存它。到底有没有?
这是客户的代码class
public class Customer {
//Constants for JSON
private static final String JSON_ID = "id";
private static final String JSON_NAME = "name";
private String mName;
private UUID mID;
private ArrayList<Item> mItems;
public Customer(){
mID = UUID.randomUUID();
mItems = new ArrayList<Item>();
}
//Loading Customer from JSON
public Customer(JSONObject jsonObject) throws JSONException{
mID = UUID.fromString(jsonObject.getString(JSON_ID));
if(jsonObject.has(JSON_NAME)){
mName = jsonObject.getString(JSON_NAME);
}
}
//JSON converter
public JSONObject toJSON() throws JSONException{
JSONObject json = new JSONObject();
json.put(JSON_ID, mID.toString());
json.put(JSON_NAME,mName);
if (!mItems.isEmpty()){
}
return json;
}
public UUID getmID() {
return mID;
}
public String getmName() {
return mName;
}
public void setmName(String mName) {
this.mName = mName;
}
//Add item debt
public void addDebt(Item i){
mItems.add(i);
}
//Get List Debt
public ArrayList<Item> getmItems(){
return mItems;
}
public Item getItem(UUID id){
for (Item item : mItems){
if (item.getmItemID().equals(id)){
return item;
}
}
return null;
}
}
这是商品
public class Item {
private String mItemName;
private Date mDate;
private UUID mItemID;
private double mPrice;
public Item(){
mDate = new Date();
mItemID = UUID.randomUUID();
}
public UUID getmItemID() {
return mItemID;
}
public void setmItemID(UUID mItemID) {
this.mItemID = mItemID;
}
public String getmItemName() {
return mItemName;
}
public void setmItemName(String mItemName) {
this.mItemName = mItemName;
}
public String toString(){
return mItemName;
}
public Date getmDate() {
return mDate;
}
public void setmDate(Date mDate) {
this.mDate = mDate;
}
public double getmPrice() {
return mPrice;
}
public void setmPrice(double mPrice) {
this.mPrice = mPrice;
}
}
GSON的思想是可以将一个JSON字符串直接转换成一个Java对象。下面是使用 GSON 解析 JSON 字符串的示例:
Gson gson = new Gson();
Notes notes = gson.fromJson(json.toString(), Notes.class);
这将解析 JSON 并将其转换为 Notes 对象。
转换回来应该像下面这样简单,但是在我的代码库中我没有使用它,所以它未经测试:
Gson gson = new Gson();
String json = gson.toJson(notes, Notes.class);
您可以执行以下操作将包括 ArrayList
在内的整个对象转换为 json,然后您可以将其保存到您的 SharedPreferences
为此,您需要导入 GSON 库。以下是您的操作方法。
如果您使用的是 Android Studio
- 转到您的 build.gradle 文件并打开它
- 向下滚动直到看到
dependencies
- 添加以下行并同步项目(选项将出现在屏幕顶部
compile 'com.google.code.gson:gson:2.3.1'
如果您使用的是 Eclipse
- Download gson jar
- 右键单击您的项目和 select 属性
- Select "Java Build Path" 在左侧,然后是 "Libraries" 选项卡。现在,单击 "Add External JARS..." 按钮
- 找到并 select 您刚刚下载的 jar 文件,然后单击 "Open"
- 最后点击"ok"你应该可以在引用库下看到它
现在的代码看起来像这样
SharedPreferences mSettings = getSharedPreferences("YourPreferenceName", Context.MODE_PRIVATE);
SharedPreferences.Editor mEditor = mSettings.edit();
GsonBuilder gsonb = new GsonBuilder();
Gson mGson = gsonb.create();
假设您有 2 种方法,一种用于保存对象,另一种用于读取对象。
public boolean writeJSON(Customer c, String yourSettingName)
{
try {
String writeValue = mGson.toJson(c);
mEditor.putString(yourSettingName, writeValue);
mEditor.commit();
return true;
}
catch(Exception e)
{
return false;
}
}
public Customer readJSON(String yourSettingName)
{
String loadValue = mSettings.getString(yourSettingName, "");
Customer c = mGson.fromJson(loadValue, Customer.class);
return c;
}
然后您可以调用这些方法,它会通知您写入是否成功,当您调用读取时,它会return您之前保存的客户对象。
希望这对你有所帮助
你能帮帮我吗?我正在尝试将我的 Java 对象(客户)保存在 android 中,目前我正在学习一本书。
这就是我得到的,我有一个具有字符串和 UUID 的客户对象。有了这些,我可以通过使用 JSON 进行转换来成功保存它们。我的问题是我想为每个客户添加一个对象数组列表,其中包含(双精度和两个字符串)。当我将客户对象转换为 json 时,如何保存此 ArrayList 并在 JSON 对象中检索它。
我研究了一下,但不是很了解。我找到了 GSON,但我不确定这是否是我需要的,也不知道如何将这个库添加到我的项目中。另一个是我可以将 JSONArray 放入 JSON 对象中吗?这是我发现但不确定的两个潜在解决方案。我试图通过文件而不是 SQLite 来保存它。到底有没有?
这是客户的代码class
public class Customer {
//Constants for JSON
private static final String JSON_ID = "id";
private static final String JSON_NAME = "name";
private String mName;
private UUID mID;
private ArrayList<Item> mItems;
public Customer(){
mID = UUID.randomUUID();
mItems = new ArrayList<Item>();
}
//Loading Customer from JSON
public Customer(JSONObject jsonObject) throws JSONException{
mID = UUID.fromString(jsonObject.getString(JSON_ID));
if(jsonObject.has(JSON_NAME)){
mName = jsonObject.getString(JSON_NAME);
}
}
//JSON converter
public JSONObject toJSON() throws JSONException{
JSONObject json = new JSONObject();
json.put(JSON_ID, mID.toString());
json.put(JSON_NAME,mName);
if (!mItems.isEmpty()){
}
return json;
}
public UUID getmID() {
return mID;
}
public String getmName() {
return mName;
}
public void setmName(String mName) {
this.mName = mName;
}
//Add item debt
public void addDebt(Item i){
mItems.add(i);
}
//Get List Debt
public ArrayList<Item> getmItems(){
return mItems;
}
public Item getItem(UUID id){
for (Item item : mItems){
if (item.getmItemID().equals(id)){
return item;
}
}
return null;
}
}
这是商品
public class Item {
private String mItemName;
private Date mDate;
private UUID mItemID;
private double mPrice;
public Item(){
mDate = new Date();
mItemID = UUID.randomUUID();
}
public UUID getmItemID() {
return mItemID;
}
public void setmItemID(UUID mItemID) {
this.mItemID = mItemID;
}
public String getmItemName() {
return mItemName;
}
public void setmItemName(String mItemName) {
this.mItemName = mItemName;
}
public String toString(){
return mItemName;
}
public Date getmDate() {
return mDate;
}
public void setmDate(Date mDate) {
this.mDate = mDate;
}
public double getmPrice() {
return mPrice;
}
public void setmPrice(double mPrice) {
this.mPrice = mPrice;
}
}
GSON的思想是可以将一个JSON字符串直接转换成一个Java对象。下面是使用 GSON 解析 JSON 字符串的示例:
Gson gson = new Gson();
Notes notes = gson.fromJson(json.toString(), Notes.class);
这将解析 JSON 并将其转换为 Notes 对象。
转换回来应该像下面这样简单,但是在我的代码库中我没有使用它,所以它未经测试:
Gson gson = new Gson();
String json = gson.toJson(notes, Notes.class);
您可以执行以下操作将包括 ArrayList
在内的整个对象转换为 json,然后您可以将其保存到您的 SharedPreferences
为此,您需要导入 GSON 库。以下是您的操作方法。
如果您使用的是 Android Studio
- 转到您的 build.gradle 文件并打开它
- 向下滚动直到看到
dependencies
- 添加以下行并同步项目(选项将出现在屏幕顶部
compile 'com.google.code.gson:gson:2.3.1'
如果您使用的是 Eclipse
- Download gson jar
- 右键单击您的项目和 select 属性
- Select "Java Build Path" 在左侧,然后是 "Libraries" 选项卡。现在,单击 "Add External JARS..." 按钮
- 找到并 select 您刚刚下载的 jar 文件,然后单击 "Open"
- 最后点击"ok"你应该可以在引用库下看到它
现在的代码看起来像这样
SharedPreferences mSettings = getSharedPreferences("YourPreferenceName", Context.MODE_PRIVATE);
SharedPreferences.Editor mEditor = mSettings.edit();
GsonBuilder gsonb = new GsonBuilder();
Gson mGson = gsonb.create();
假设您有 2 种方法,一种用于保存对象,另一种用于读取对象。
public boolean writeJSON(Customer c, String yourSettingName)
{
try {
String writeValue = mGson.toJson(c);
mEditor.putString(yourSettingName, writeValue);
mEditor.commit();
return true;
}
catch(Exception e)
{
return false;
}
}
public Customer readJSON(String yourSettingName)
{
String loadValue = mSettings.getString(yourSettingName, "");
Customer c = mGson.fromJson(loadValue, Customer.class);
return c;
}
然后您可以调用这些方法,它会通知您写入是否成功,当您调用读取时,它会return您之前保存的客户对象。
希望这对你有所帮助