【问题标题】:how to save json array to android internal storage如何将json数组保存到android内部存储
【发布时间】:2013-06-16 10:17:30
【问题描述】:

所以我正在开发一个像 http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/ 这样的项目,让我可以将我的数据库值显示到我的 android 应用程序 GUI。

我需要将我需要的数据库值保存到 android 内部存储中,以便即使我的应用程序未连接到服务器也可以访问它。有什么帮助吗?

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以将整个 json 写入共享首选项中的字符串,然后获取并解析它以在 GUI 中显示,即使设备处于离线状态:

    String str = json.toString();
    SharedPreferences sharedPref = getSharedPreferences( "appData", Context.MODE_WORLD_WRITEABLE );
    SharedPreferences.Editor prefEditor = getSharedPreferences( "appData", Context.MODE_WORLD_WRITEABLE ).edit();
    prefEditor.putString( "json", str );
    prefEditor.commit();
    

    【讨论】:

    【解决方案2】:

    如果您选择本地 sqlite 数据库作为解决方案,我编写了一个轻量级实用程序,用于将您的 json 保存到 sqlite。

    在这里结帐 git repo。 https://github.com/wenchaojiang/JSQL

    您只需要一行代码。

    new JSQLite(yourJsonString, yourDB).persist();
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      考虑使用本地数据库将服务器数据缓存在本地,大多数应用都是这样做的,这里有一个很好的sqlite on android教程Android SQLite

      如果您只使用服务器中的一个或几个 JSONObjects,您可以使用SharedPreferences,编辑/更新更容易、更快捷。 example

      关于安卓存储的更多信息:Android Storage

      【讨论】:

        【解决方案4】:

        我正在开发一个连接到我们服务器中的 php-mysql 数据库的应用程序,而不是将查询结果保存在文件中,您应该将它(至少我是这么认为的)保存在内部 Android 数据库 (sqlite)。 Android中有很多关于数据库的信息。

        通过example,您可以了解如何轻松使用 sqlite 和 ContentProviders(访问保存在数据库中的数据的更简洁的方式。

        为了在您的数据库中正确保存 JSONArray,我建议您使用 Jackson 库,以便从 JSON 创建对象,使其更易于保存。

        最后,如果信息量比较少,你也可以使用SharedPreferences,这样可以更快地访问数据,因为它保存在移动内存中。

        希望对你有帮助:)

        【讨论】:

          【解决方案5】:
              //if you have already the json string
              String str = json.toString();
          
              //if you want to convert list to json (with Gson):
              //foo - will be your list 
              String str = new Gson().toJson(foo );
          
             SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
             SharedPreferences.Editor prefEditor = sharedPref.edit();
             prefEditor.putString("pref_json_key", str);
             prefEditor.apply();
          

          【讨论】:

            【解决方案6】:

            您可以尝试使用Realm.io 一个简单的例子:

            public class City extends RealmObject {
              private String city;
              private int id;
              // getters and setters left out ...
             }
            
             // Insert from a string
             realm.beginTransaction();
             realm.createObjectFromJson(City.class, "{ city: \"Copenhagen\", id: 1 }");
             realm.commitTransaction();
            

            问候!!!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-10-28
              • 2023-03-10
              • 2012-03-16
              • 1970-01-01
              • 2011-10-10
              • 1970-01-01
              • 2021-01-28
              • 2019-06-27
              相关资源
              最近更新 更多