将固定数据存储在JSON而不是SQLite中是否有用

时间:2013-10-01 00:47:46

标签: java android json sqlite

我是Android的新手,目前我正在开发自己的应用程序(用于学习)。 问题是,以JSON而不是SQLite的形式存储固定数据是否合适(我根本不会更新数据),我已经尝试将其存储在HashMap中,我觉得这不太好。

HashMap中的当前代码是

HashMap<Integer, String[]> data = new HashMap<Integer, String[]>();
data.put(1, new String[]{"asd", "cax", "etc", "etc"});

提前致谢

3 个答案:

答案 0 :(得分:2)

由于您的数据看起来像一个字符串数组,因此一个想法是使用Android的内置资源系统。

您可以将数据存储在名为res/values/arrays.xml的XML文件中,例如:

<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
    </string-array>
</resources>

在您的代码中,您可以按如下方式访问数组:

Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);

您可以从以下链接中找到更多信息。

答案 1 :(得分:1)

你应该尽可能避免使用Sqlite,因为它很慢并占用大量内存。但是你说你不会更新数据......那么存储它的重点是什么?我只是假设你错过了,在这种情况下,只要你序列化它就可以正常工作。另一方面,将它转换为Json可能更容易,因为它允许您使用SharedPreferences。

答案 2 :(得分:0)

对于不会改变的预定义数据,只要数据相当简单,这样的东西就好了。但是,在您给出的示例中,您可以使用字符串数组而不是HashMap:

String[] data = new String[] {"asd", "cax", "etc", "etc"};

对于更大的预定义数据集,另一个选项是使用字符串数组资源。这也具有能够为您的字符串本地化等提供不同资源的优点。更多信息在这里: http://developer.android.com/guide/topics/resources/string-resource.html#StringArray

对于更复杂的数据(例如某些二进制数据而不仅仅是简单的字符串),您可能希望使用原始资源(通过Resources.openRawResource()访问)或资产(通过AssetManager访问):http://developer.android.com/guide/topics/resources/providing-resources.html