将嵌套的JSON解析并保存到SQLite中,然后进行检索

修改

我设法只插入外部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
}
totomy 回答:将嵌套的JSON解析并保存到SQLite中,然后进行检索

创建一个typeToken并将其传递给fromJson方法,如下所示

Type listType = new TypeToken<List<Country>>(){}.getType();
List<Country> countryList = gson.fromJson(jsonArray.toString(),listType);
,

TypeToken解析期间使用Gson JSON设置返回对象类型

List<Country> countries  = gson.fromJson(jsonString,new TypeToken<List<Country>>(){}.getType());

for(Country country : countries) {
    //Do your DB operation here
}
本文链接:https://www.f2er.com/3142687.html

大家都在问