Android 为什么数组的名称应该与JsonObject的名称相同?
使用此存储库: 在本教程之后: 代码开箱即用,但如果我更改了JsonResponse类返回的数组的名称,它会给我一个空指针异常。 这是Json返回的响应:Android 为什么数组的名称应该与JsonObject的名称相同?,android,json,nullpointerexception,Android,Json,Nullpointerexception,使用此存储库: 在本教程之后: 代码开箱即用,但如果我更改了JsonResponse类返回的数组的名称,它会给我一个空指针异常。 这是Json返回的响应: { "android": [ { "ver": "1.5", "name": "Cupcake", "api": "API level 3" }, { "ver": "1.6", "name": "Donut", "api": "API level 4" }, { "ver": "2.0 - 2.1", "name": "Eclair", "
{ "android": [ { "ver": "1.5", "name": "Cupcake", "api": "API level 3" }, { "ver": "1.6", "name": "Donut", "api": "API level 4" }, { "ver": "2.0 - 2.1", "name": "Eclair", "api": "API level 5 - 7" }, { "ver": "2.2", "name": "Froyo", "api": "API level 8" }, { "ver": "2.3", "name": "Gingerbread", "api": "API level 9 - 10" }, { "ver": "3.0 - 3.2", "name": "Honeycomb", "api": "API level 11 - 13" }, { "ver": "4.0", "name": "Ice Cream Sandwich", "api": "API level 14 - 15" }, { "ver": "4.1 - 4.3", "name": "JellyBean", "api": "API level 16 - 18" }, { "ver": "4.4", "name": "KitKat", "api": "API level 19" }, { "ver": "5.0 - 5.1", "name": "Lollipop", "api": "API level 21 - 22" }, { "ver": "6.0", "name": "Marshmallow", "api": "API level 23" }, { "ver": "7.0 - 7.1", "name": "Nougat", "api": "API level 24 - 25" } ] }
JsonResponse类中的数组名是android,它与响应中对象的名称相同。如果我将其更改为类似于androids的名称,它将崩溃。有人能解释一下吗?您可以在pojo类中更改数组名称,但应将序列化名称保留为android。您可以在pojo类中更改数组名称,但应将序列化名称保留为android。如果您想在pojo对象中使用其他名称,则需要使用注释 例如,在您的情况下,您需要执行以下操作:
public class POJOClass {
//...
@SerializedName("android")
private ArrayList androids;
//...
}
现在,您可以拥有一个具有所需名称的arrayList。通过此注释,您可以将json中的元素与变量链接起来。如果您想在POJO对象中使用不同的名称,则需要使用注释 例如,在您的情况下,您需要执行以下操作:
public class POJOClass {
//...
@SerializedName("android")
private ArrayList androids;
//...
}
现在,您可以拥有一个具有所需名称的arrayList。通过此注释,您可以将json中的元素与变量链接。您可以使用@SerializedName注释为变量指定不同的名称 例如—
public class POJOClass {
@SerializedName("android") //here use name same as in json to let them map.
private ArrayList androidList; //use name as you want here
}
您可以使用@SerializedName注释为变量指定不同的名称 例如—
public class POJOClass {
@SerializedName("android") //here use name same as in json to let them map.
private ArrayList androidList; //use name as you want here
}
该示例似乎没有使用序列化。如果您想更改数组的名称,也可以添加。这将有助于您在对代码进行模糊处理后启用progaurd。通过指定**bold**@SerializedName,GSON将不会基于变量名在json中查找,只会使用指定的**bold**@SerializedName。示例似乎没有使用序列化。如果您想更改数组的名称,也可以添加,这将有助于您在对代码进行模糊处理后启用progaud。通过指定**bold**@SerializedName,GSON将不会基于变量名在json中查找,只使用指定的**bold**@SerializedName