Java 持久JSON内容

Java 持久JSON内容,java,android,json,Java,Android,Json,我的问题是保存从JSON文件解析的内容。 我想保存内容,所以在清除最近的应用程序后,JSON的内容将保持未删除状态。实际上正在解析JSON,但在完全关闭应用程序后,我必须启用网络连接才能再次检索JSON的内容。 如果需要更多的代码,我将添加它-只需说这样做。 干杯 包pl.bugbarker.cherry56su.Docs; 导入java.util.ArrayList; 导入pl.bugbarker.cherry56su.Docs.Download_data.Download_complete;

我的问题是保存从JSON文件解析的内容。
我想保存内容,所以在清除最近的应用程序后,JSON的内容将保持未删除状态。实际上正在解析JSON,但在完全关闭应用程序后,我必须启用网络连接才能再次检索JSON的内容。
如果需要更多的代码,我将添加它-只需说这样做。
干杯

包pl.bugbarker.cherry56su.Docs;
导入java.util.ArrayList;
导入pl.bugbarker.cherry56su.Docs.Download_data.Download_complete;
进口pl.Bugbarker.cherry56su.R;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.text.util.Linkify;
导入android.view.view;
导入android.widget.ListView;
导入android.widget.TextView;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入静态android.support.v7.appcompat.R.styleable.View;
公共类DocsActivity扩展AppCompativity实现下载\u完成{
公共列表查看文档列表;
public ArrayList documents=new ArrayList();
公共列表适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u文档);
getSupportActionBar().setTitle(“Dokumenty”);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setElevation(0);
文档列表=(ListView)findViewById(R.id.docs\u列表);
适配器=新的ListAdapter(此);
文件列表。设置适配器(适配器);
下载数据下载数据=新的下载数据((下载完成)此项);
下载数据。从链接下载数据http://link.com/file.json");
}
公共void获取_数据(字符串数据)
{
试一试{
JSONArray数据_数组=新的JSONArray(数据);
对于(int i=0;i

编辑:
我将很快检查所有这些答案,当我完成时,答案将被检查,问题将得到解决

持久JSON内容

您可以使用gson更轻松地解析JSON数据。 在build.gradle文件中添加此依赖项

compile 'com.google.code.gson:gson:2.8.0'
然后创建一个POJO类来解析JSON数据

示例POJO类:

  public class AppGeneralSettings {
    @SerializedName("key1")
String data;


    public String getData() {
        return data;
    }

}
示例JSON对象

{
   "key1":"hellow world!"
}
  • 要从internet解析json字符串,请使用以下代码段

    AppGeneralSettings data=new Gson().fromJson(jsonString, AppGeneralSettings.class);
    
然后添加一个helper类来存储JSON数据,并从首选项中检索JSON数据

示例:用于存储数据的助手类

public class AppPreference {
    private static final String FILE_NAME = BuildConfig.APPLICATION_ID + ".apppreference";
    private static final String APP_GENERAL_SETTINGS = "app_general_settings";
    private final SharedPreferences preferences;

    public AppPreference(Context context) {
        preferences = context.getSharedPreferences(FILE_NAME, MODE_PRIVATE);
    }

    public SharedPreferences.Editor setGeneralSettings(AppGeneralSettings appGeneralSettings) {
        return preferences.edit().putString(APP_GENERAL_SETTINGS, new Gson().toJson(appGeneralSettings));
    }

    public AppGeneralSettings getGeneralSettings() {
        return new Gson().fromJson(preferences.getString(APP_GENERAL_SETTINGS, "{}"), AppGeneralSettings.class);
    }
}
new AppPreference().setGeneralSettings(appGeneralSettings).commit();
保存数据

public class AppPreference {
    private static final String FILE_NAME = BuildConfig.APPLICATION_ID + ".apppreference";
    private static final String APP_GENERAL_SETTINGS = "app_general_settings";
    private final SharedPreferences preferences;

    public AppPreference(Context context) {
        preferences = context.getSharedPreferences(FILE_NAME, MODE_PRIVATE);
    }

    public SharedPreferences.Editor setGeneralSettings(AppGeneralSettings appGeneralSettings) {
        return preferences.edit().putString(APP_GENERAL_SETTINGS, new Gson().toJson(appGeneralSettings));
    }

    public AppGeneralSettings getGeneralSettings() {
        return new Gson().fromJson(preferences.getString(APP_GENERAL_SETTINGS, "{}"), AppGeneralSettings.class);
    }
}
new AppPreference().setGeneralSettings(appGeneralSettings).commit();
检索数据

 AppGeneralSettings appGeneralSettings = new AppPreference().getGeneralSettings();

obj.toString()
存储到首选项中,以后再使用它,但是如何使用呢?制作类似于指定用于存储的新活动的内容?哦,它是obj.getString()
,而不是
.toString()
。我应该将
toString()
,然后存储它吗?不,一旦您获得数据,然后将其存储到
首选项中,并在
内部创建
获取它,如果检索到的字符串为非空,则使用它来显示您的数据,但如何将其存储在
首选项中?只要给我任何与存储相关的链接。只需谷歌
将字符串优先存储在android
中,你能告诉我“key1”到底是什么吗?这是否与首选项文件中的android:key=“key1”
类似?它只是json字符串中使用的自定义名称