修改
我设法只插入外部JSON对象。找不到有关如何插入嵌套对象的信息。每个对象中都有原始字段。这些对象可以在下面的JSON示例中看到:“语言”和“货币”。我也想知道如何处理外部JSON对象中的“ latlng”数组,但是一次处理这些问题可能更好。
我在外部JSON对象中插入原始值的代码:
Gson gson = new Gson();
Type listType = new TypeToken<List<Country>>(){}.getType();
List<Country> countriesList = gson.fromJson(jsonString,listType);
for(Country country : countriesList) {
Contentvalues insertvalues = new Contentvalues();
insertvalues.put(Country.NAME,country.getName());
//more insertions
}
原始问题
我用GSON解析了一个嵌套的JSON(因为这是我第一次,所以可能不正确)。现在,我试图将其插入SQLite。找不到下一步需要写的内容。当我为插入编写for循环时,出现错误cannot find symbol class Country
。找不到在线相关的指导,因此希望任何人都可以帮助您前进。
那是问题开始的地方
Country[] countriesArray = gson.fromJson(jsonString,Country[].class);
for (int i = 0; i < countriesArray.length(); i++) {
...
}
countriesArray.length()
被标记为错误:找不到符号类Country。
JSON中的一个对象:
[
{
"name":"Afghanistan","topLevelDomain":[
".af"
],"callingCodes":[
"93"
],"capital":"Kabul","region":"Asia","subregion":"Southern Asia","population":27657145,"latlng":[
33.0,65.0
],"demonym":"Afghan","area":652230.0,"gini":27.8,"timezones":[
"UTC+04:30"
],"nativeName":"افغانستان","numericCode":"004","currencies":[
{
"name":"Afghan afghani","symbol":"؋"
}
],"languages":[
{
"name":"Pashto","nativeName":"پښتو"
},{
"name":"Uzbek","nativeName":"Oʻzbek"
},{
"name":"Turkmen","nativeName":"Türkmen"
}
],"translations":{
"de":"Afghanistan",},"flag":"https://restcountries.eu/data/afg.svg","cioc":"AFG"
},
我编写的模型类仅适用于所需的变量对象和数组。
模型类Country.Java
public class Country implements Parcelable {
private String name;
private String capital;
private String region;
private String subregion;
private int population;
private List<Double> latlng = new ArrayList<Double>();
private double area;
private double gini;
private List<String> timezones = new ArrayList<String>();
private List<Currency> currencies = new ArrayList<Currency>();
private List<Language> languages = new ArrayList<Language>();
private String flag;
public Country() {}
//getters,setters,toString() and Parcelable methods
}
模型类Currency.Java
public class Currency implements Parcelable {
private String name;
private String symbol;
//getters,toString() and Parcelable methods
}
模型类Language.Java
public class Language implements Parcelable {
private String name;
private String nativeName;
//getters,toString() and Parcelable methods
}