Попробуйте добавить аннотацию @Expose, рабочий пример:
app \ src \ main \ assets \ js \ test.json
[
{
"$id": "1",
"AccountEvaluations": [],
"EvaluationDevelopments": [],
"EvaluationQuestions": [],
"ID": "44e5ecdb-e7b8-412e-8f09-f8e1ec18eeaf",
"TestName": "Psychometric Evaluation"
},
{
"$id": "2",
"AccountEvaluations": [],
"EvaluationDevelopments": [],
"EvaluationQuestions": [],
"ID": "4db4a145-0158-488b-b44d-285ce99111c7",
"TestName": "Numeric Reasoning Evaluation"
},
{
"$id": "3",
"AccountEvaluations": [],
"EvaluationDevelopments": [],
"EvaluationQuestions": [],
"ID": "941495b9-7bc6-4451-bd79-86c31617fa5c",
"TestName": "Comprehesnive Evaluation"
}
]
Evaluations.java
import androidx.annotation.NonNull;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Evaluations {
@Expose
@SerializedName("$id")
private String AAA;
@Expose
@SerializedName("ID")
private String ID;
@Expose
@SerializedName("TestName")
private String TestName;
@NonNull
@Override
public String toString() {
return String.format("%s(", Evaluations.class.getSimpleName()) +
String.format("AAA=%s, ", AAA) +
String.format("ID=%s, ", ID) +
String.format("TestName=%s", TestName) +
")";
}
}
MainActivity.kt например, внутри метода onCreate () - я быстро протестировал его на своем открытом проекте, поэтому это файл KOTLIN!
val fileName = "js/test.json"
val fileData = applicationContext.assets.open(fileName).bufferedReader().use{ it.readText() }
val gson = GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()
val listType = object : TypeToken<Collection<Evaluations>>(){}.type
val obj = gson.fromJson<Collection<Evaluations>>(fileData, listType)
Log.v("TAG", "obj: " + obj)
Выход журнала:
obj: [Evaluations(AAA=1, ID=44e5ecdb-e7b8-412e-8f09-f8e1ec18eeaf, TestName=Psychometric Evaluation), Evaluations(AAA=2, ID=4db4a145-0158-488b-b44d-285ce99111c7, TestName=Numeric Reasoning Evaluation), Evaluations(AAA=3, ID=941495b9-7bc6-4451-bd79-86c31617fa5c, TestName=Comprehesnive Evaluation)]