- Under src/main add new directory named “assets“.
- Inside this directory add your json file.
- Create a Utils class to add the method that will read your json file from assets.
Java
import android.content.Context;
import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
public class Utils {
public static String getAssetJsonData(Context context) {
String json;
try {
InputStream is = context.getAssets().open("properties.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
Log.e("data", json);
return json;
}
}
Kotlin
import android.content.Context
import android.util.Log
import java.io.IOException
class Utils {
fun getAssetJsonData(context: Context): String? {
val json: String
try {
val inputStream = context.getAssets().open("properties.json")
val size = inputStream.available()
val buffer = ByteArray(size)
inputStream.use { it.read(buffer) }
json = String(buffer)
} catch (ioException: IOException) {
ioException.printStackTrace()
return null
}
// print the data
Log.i("data", json)
return json
}
}
Now in your activity you can parse the json file like this:
String data = getAssetJsonData(getApplicationContext());
Type type = new TypeToken<Your model class>(){}.getType();
Your Model class properties = new Gson().fromJson(data, type);A concrete example is this:
json file
[
{
"name": "Temperature",
"type": "Motor",
"unit": "°C",
"value": "40"
},
{
"name": "Remaining capacity",
"type": "Battery",
"unit": "Wh",
"value": "250"
}
]
String data = getAssetJsonData(getApplicationContext());
Type type = new TypeToken<List<Property>>(){}.getType();
List<Property> properties = new Gson().fromJson(data, type);
