我试图理解为什么使用getString来解析JSON对象中的整数值
我看着official documentation 它说:
getString
公共字符串getString(字符串名称)
返回按名称映射的值(如果存在),如果需要则强制转换,或者如果不存在这种映射则抛出。
json文件为here
请注意 ,其中“ id” :具有整数值
这是MainActivity中的代码
// looping through all Contacts
for (int i = 0; i < pokemons.length(); i++) {
//TODO: get the JSONObject and its three attributes
JSONObject c = pokemons.getJSONObject(i);
String name = c.getString("name");
>>> String id = c.getString("id"); <<<
String candy = c.getString("candy");
// tmp hash map for a single pokemon
HashMap<String, String> pokemon = new HashMap<>();
// add each child node to HashMap key => value
pokemon.put("name", name);
pokemon.put("id", id);
pokemon.put("candy", candy);
// adding a pokemon to our pokemon list
pokemonList.add(pokemon);
}
不是 getString()而是 getInt()吗?因为您在json文件中看到 id:是一个int值的键! 我试着用 getInt()解析它,并将其分配给一个int变量,它也起作用了!
注意,该代码来自http网络上的教程,它可以按预期工作,不会崩溃或出现错误,并且它不是我的代码。
答案 0 :(得分:1)
它应该是getInt(String name)
,您应该更改它。或者,您也可以使用optInt(String name, int fallback)
。文档为here
此外,如果您进行更改,则必须进行更改
pokemon.put("id", id);
任何一个
pokemon.put("id", id + "");
或pokemon.put("id", String.valueOf(id));
因为您的HashMap在值字段中需要一个字符串。
答案 1 :(得分:1)
您可以使用
int id = c.getInt("id");
JsonObject具有名称为的方法 getInt()