首先,这是我要解析的项目。现在,我试图从这个JSON获取“name”键的值。我在使用GSON获取其他必要变量时没有遇到任何问题,但这个变量要比那些变量要复杂得多。
"types": [
{
"slot": 2,
"type": {
"url": "https://www.pokeapi.co/api/v2/type/4/",
"name": "poison"
}
},
{
"slot": 1,
"type": {
"url": "https://www.pokeapi.co/api/v2/type/12/",
"name": "grass"
}
}
]
这是我的代码,它允许我从除了类型数组之外的所有所需变量成功创建treecko对象。
Gson gson = new Gson();
PokedexMemberJava treecko = gson.fromJson(jsonPokemon, PokedexMemberJava.class);
我曾经尝试从JSON创建对象的类。当我尝试从JSON创建对象时,除了类型数组之外,所有变量都被成功加载,这些类型被创建为null。这些其他变量是从JSON的不同部分加载的,但是如果需要查看它,我在这篇文章的底部包含了一个链接。
public class PokedexMemberJava {
int id;
String name;
int height;
int weight;
Types[] type;
public PokedexMemberJava(int id, String name, int height, int weight){
this.id = id;
this.name = name;
this.height = height;
this.weight = weight;
}
}
public class Types {
public Type typeObject;
public int slot;
public Types (Type typeObject, int slot){
this.typeObject = typeObject;
this.slot = slot;
}
}
public class Type {
public String url;
public String name;
public Type (String url, String name){
this.url = url;
this.name = name;
}
}
我花了几个小时的时间试图解决这个问题,并尝试使用org.json之类的其他库来获取名称变量无济于事。我只包括了我试图获得的部分的JSON。如果由于某种原因你想看看我试图解析的整个JSON对象是什么样的,你可以在这里找到它:https://pokeapi.co/api/v2/pokemon/252/。此外,我为这篇文章的任何错误或不良格式道歉。这是我第一次在StackOverflow上发布问题。
答案 0 :(得分:0)
您的json字段名称不匹配:
Types[] types;
代替Types[] type;
,而{j} types
属性不匹配
Type type;
代替Type typeObject;
,而{j} type
属性不匹配
醇>
所以你有两个选择:
使用@SerializedName
覆盖属性名称:
public class PokedexMemberJava {
@SerializedName("types")
Types[] type;
...
public class Types {
@SerializedName("type")
public Type typeObject;