gpt4 book ai didi

java - 如何使用 GSON 从 JSON 响应中获取对象数组

转载 作者:行者123 更新时间:2023-12-02 03:23:40 25 4
gpt4 key购买 nike

我正在使用 RestTemplate 和 GSON 编写 REST 客户端。以下是我的 JSON 响应示例

{
"value": [
{
"properties": {
"vmId": "f7f953fb-d853-4373-b564-",
"hardwareProfile": {
"vmSize": "Standard_D2"
},

},
"name": "A",
"Id": ""
},

{
"properties": {
"vmId": "f7f953fb-d853-4373-b564-",
"hardwareProfile": {
"vmSize": "Standard_D2"
},

},
"name": "B",
"Id": ""
},

{
"properties": {
"vmId": "f7f953fb-d853-4373-b564-",
"hardwareProfile": {
"vmSize": "Standard_D2"
},

},
"name": "C",
"Id": ""
}
]
}

我想要的是我只想获取属性的值 --> "name"

因此,我创建了一个简单的 POJO,其中只有 name 作为成员字段。

public class VMNames {
public String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

我正在尝试使用像这样的 GSON 来获取这个 POJO 的数组。在这里,响应是我的 JSON 响应对象。

Gson gson = new Gson();
VMNames[] vmNamesArray = gson.fromJson(response.getBody(), VMNames[].class);
System.out.println(vmNamesArray.length);

但是当我这样做时,我收到一个错误,如下所示:

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

请注意,我不想创建一个与 JSON 对象结构完全相同的 POJO,因为我只想从 JSON 对象中获取一个属性。我希望我不必真正创建一个与 JSON 响应具有相同结构的 POJO,因为实际上,这是一个巨大的响应,我无法控制它,所以它明天也可能会改变。

最佳答案

你能试试这个吗:

public class VMNames {
@SerializedName("name")
public String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

Type collectionType = new TypeToken<Collection<VMNames>>(){}.getType();
Collection<VMNames> vmNamesArray = gson.fromJson(response.getBody(), collectionType);
System.out.println(vmNamesArray.length);

或者尝试:

VMNames[] vmNamesArray = gson.fromJson(response.getBody(), VMNames[].class);

关于java - 如何使用 GSON 从 JSON 响应中获取对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39280834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com