Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么数组的名称应该与JsonObject的名称相同?_Android_Json_Nullpointerexception - Fatal编程技术网

Android 为什么数组的名称应该与JsonObject的名称相同?

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", "

使用此存储库: 在本教程之后: 代码开箱即用,但如果我更改了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", "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