java - 持久的 JSON 内容

标签 java android json

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

package pl.bugbreaker.cherry56su.Docs;
import java.util.ArrayList;
import pl.bugbreaker.cherry56su.Docs.Download_data.download_complete;
import pl.bugbreaker.cherry56su.R;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.util.Linkify;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import static android.support.v7.appcompat.R.styleable.View;

public class DocsActivity extends AppCompatActivity implements download_complete {

public ListView docs_list;
public ArrayList<Doc> documents = new ArrayList<Doc>();
public ListAdapter adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_docs);
    getSupportActionBar().setTitle("Dokumenty");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setElevation(0);
    docs_list = (ListView) findViewById(R.id.docs_list);
    adapter = new ListAdapter(this);
    docs_list.setAdapter(adapter);

    Download_data download_data = new Download_data((download_complete) this);
    download_data.download_data_from_link("http://link.com/file.json");

}

public void get_data(String data)
{
    try {
        JSONArray data_array=new JSONArray(data);
        for (int i = 0 ; i < data_array.length() ; i++)
        {
            JSONObject obj=new JSONObject(data_array.get(i).toString());
            Doc add=new Doc();
            add.doc = obj.getString("doc");
            add.doc_link = obj.getString("doc_link");
            documents.add(add);
        }
        adapter.notifyDataSetChanged();
    } catch (JSONException e) {
        e.printStackTrace();
    }

}
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

}  

编辑:
我会尽快检查所有这些答案,当我完成时,答案将被检查并完全解决问题。

最佳答案

Persistent JSON content

您可以使用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!"
}
  • 要解析来自互联网的 json 字符串,请使用此代码段

    AppGeneralSettings data=new Gson().fromJson(jsonString, AppGeneralSettings.class);
    

然后添加一个辅助类来存储和检索 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();

检索数据

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

关于java - 持久的 JSON 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43075756/

相关文章:

java - 无法卸载 Java JRE 1.7 32 位

Java持久化日期查询

c# - 将此 JSON 制作为一个类

java - 如何使用 XSL 和 Java 创建 PDF?

java - 如何使 TextView 不可见

android - Flutter 在 ListView 中不显示有状态的子 Widget

android: TTS 可以说粤语吗?

javascript - 使用 JQuery 将 JSON 项目添加到 HTML 列表

javascript - jQuery $.parseJSON 数据到 HTML

Java获取半月数