Java 持久JSON内容
我的问题是保存从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的内容。
如果需要更多的代码,我将添加它-只需说这样做。
干杯
包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);
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字符串中使用的自定义名称