Данные Json, которые у меня есть.
[
{
"code": "24",
"name": "Rajsathan",
"districts": [
{"code":"1",
"name":"Jodhpur"},
{"code":"2",
"name":"Nagore"}
]
}
]
Чтение данных из файла в качестве входного потока.
BufferedReader br = new BufferedReader(new InputStreamReader(in));
Gson gson = new Gson();
String temp = null;
String total = null;
try {
while((temp = br.readLine()) != null) {
total+=temp;
}
} catch (Exception e){
e.printStactTrace();
}
Теперь я попробовал много разных способов преобразовать эти данные в Объекты java, но получили нулевое значение при пропуске всей строки или неправильно сформированную ошибку json при преобразовании каждого потока из потокового ридера.
StatesModel data = gson.fromJson(total, StatesModel.class);
// as its a list of json
Type collectionType = new TypeToken<Collection<StatesModel>>(){}.getType();
Collection<StatesModel> json_data = gson.fromJson(total, collectionType);
Но оба не работают.
Классы Java для StatesModel определены следующим образом.
public class StatesModel {
@SerializedName("code")
public String code;
@SerializedName("name")
public String name;
@SerializedName("districts")
public List<DistrictModel> districts;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<DistrictModel> getDistricts() {
return districts;
}
public void setDistricts(List<DistrictModel> districts) {
this.districts = districts;
}
}
И модель класса районов.
public class DistrictModel {
@SerializedName("code")
public String code;
@SerializedName("name")
public String name;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
что было бы правильным способом преобразовать эти данные в итерируемые javaObjects.