Android:在Android中为应用程序离线存储JSON数据的最佳方法是什么?

时间:2015-04-13 13:21:21

标签: android json

我想要实现一个应用程序,它将显示路线编号,骑手已登陆谷歌地图。因此,要查找路由号,我需要一些有关路由的信息,这些信息在JSON文件中定义。 JSON文件中的信息将从应用程序中脱机处理和解析。它也应该与应用程序一起安装和卸载。 JSON文件包含100多个route_direction。它看起来像下面的代码。我可以在哪个文件夹中存储JSON文件到我的Android项目中?这样存储数据的最佳方法是什么?

JSON文件:



{"route_direction":[
   {
     1_ab:{
                     
                    { 
                      stopsName_arrivalTime:{"abc":{"mon-fri":[05:33,06:00,06:30,...],
                                                        "sat":[],
                                                        "son":[]
                                                               }
                                             }, 

                                             
                         stops_loca:{lat:53.337994, long:10.600423} ,

                    },
                    { 
                      stopsName_arrivalTime:{"def":{"mon-fri":[],
                                                        "sat":[],
                                                        "son":[]
                                                         }
                                             }, 

                                             
                         stops_loca:{lat:53.740624, long:10.101322} 

                    },
                    { 
                      stopsName_arrivalTime:{"hgk":{"mon-fri":[],
                                                        "sat":[],
                                                        "son":[]
                                                               }
                                             }, 

                                             
                         stops_loca:{lat:53.644834, long:10.203372} 

                    }



                }

       },

        {1_ba:{
                     
                    { 
                      stopsName_arrivalTime:{"hgk":{"mon-fri":[05:33,06:00,06:30],
                                                        "sat":[],
                                                        "son":[]
                                                               }
                                             }, 

                                             
                         stops_loca:{lat:53.437994, long:10.400423} ,

                    },
                    { 
                      stopsName_arrivalTime:{"def":{"mon-fri":[],
                                                        "sat":[],
                                                        "son":[]
                                                         }
                                             }, 

                                             
                         stops_loca:{lat:53.540624, long:10.601322} 

                    },
                    { 
                      stopsName_arrivalTime:{"abc":{"mon-fri":[],
                                                        "sat":[],
                                                        "son":[]
                                                               }
                                             }, 

                                             
                         stops_loca:{lat:53.244834, long:10.703372} 

                    }


                }

        },........

   ]

}




3 个答案:

答案 0 :(得分:12)

也许您可以使用SharedPreferences保存它们。您可以通过执行以下操作来存储json对象/数组:

将json保存到SharedPreferences:

    PreferenceManager.getDefaultSharedPreferences(context).edit()
.putString("theJson",jsonObject.toString()).apply();

获取存储的json:

JsonObject jsonObject = PreferenceManager.
getDefaultSharedPreferences(this).getString("theJson","");

答案 1 :(得分:2)

基本上,有两个地方可以存储原始内容: assets / res / raw / (原始资源)。这些已经讨论了很多,例如,请参阅链接:

The reason for Assets and Raw Resources in Android

http://thedevelopersinfo.com/2009/11/27/using-files-as-raw-resources-in-android/

http://www.41post.com/3985/programming/android-loading-files-from-the-assets-and-raw-folders

答案 2 :(得分:0)

您可以在资产文件夹

中存储您希望与应用程序打包的abitrary文件

https://developer.android.com/tools/projects/index.html

  

main / assets /

     

这是空的。您可以使用它来存储原始资产文件。   您在此处保存的文件将按原样编译为.apk文件,并且   原始文件名被保留。您可以在中导航此目录   与使用URI和读取文件的典型文件系统相同的方式   使用AssetManager的字节流。例如,这是一个很好的   纹理和游戏数据的位置。

See this question on how to read from assets.