getString(“ K”)是否可以从json对象提取int值吗?

时间:2019-04-04 07:39:23

标签: java android json

我试图理解为什么使用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网络上的教程,它可以按预期工作,不会崩溃或出现错误,并且它不是我的代码。

2 个答案:

答案 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()