持久的JSON内容

时间:2017-03-28 17:08:23

标签: 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;
}

}  

修改
我会尽快检查所有这些答案,当我完成时,将检查答案并解决问题。

1 个答案:

答案 0 :(得分:2)

  

持久性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!"
}
  • 要解析来自互联网的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();