While I am building an Android application. I wanted to read a property file and wanted to act my app depends on the property file configuration. But, property file can't handle array unless I add dependency Apache Common Configuration. As I am building an mobile application, it should be compact. for the reason, I just used Android JSONObject to resolve this.
Create "country.json" file and locate it Android device "/" directory
{
"country": [
{
"name": "germany",
"code": "DE",
"continent": "Europe",
"eat": "sausage"
},
{
"name": "france",
"code": "FR",
"continent": "Europe",
"eat": "croissant"
},
{
"name": "korea",
"code": "KR",
"continent": "ASIA",
"eat": "rice"
},
{
"name": "japan",
"code": "JP",
"continent": "ASIA",
"eat": "fish"
}
]
}
Create 2 method and use "getCountryList()" on your need.
private List<Country> getCountryList() throws Exception {
File dirSDCard = Environment.getExternalStorageDirectory();
File yourFile = new File(dirSDCard, "country.json");
InputStream jsonStream = new FileInputStream(yourFile);
JSONObject jsonObject = new JSONObject(InputStreamToString(jsonStream));
JSONArray jsonArray = jsonObject.getJSONArray("country");
List<Country> countryList = new ArrayList<Country>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonCountry = jsonArray.getJSONObject(i);
Country country = new Country();
country.setName(jsoncountry.getString("name"));
country.setCode(jsoncountry.getString("code"));
country.setContinent(jsoncountry.getString("continent"));
country.setEat(jsoncountry.getString("eat"));
countryList.add(country);
}
return countryList;
}
private String InputStreamToString(InputStream is) {
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuilder total = new StringBuilder();
String line;
try {
while ((line = r.readLine()) != null) {
total.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return total.toString();
}