我没有得到containerStatuses的名称。我尝试了这一点(关于先前的帖子),该错误在get(“ name”)上报告为“该类型的JsonElement的get(String)方法未定义”。
感谢您的帮助
JsonObject data = new Gson().fromJson(myjsoncontent, JsonObject.class);
JsonArray items = data .get("items").getAsJsonArray();
for(JsonElement element : items){
JsonObject object = element.getAsJsonObject();
String containerstatusesname = object.get("status").getAsJsonObject().get("containerStatuses").getAsJsonArray().get(0).get("name").getAsString();
}
// My Json Content
{
"kind": "Space",
"apiVersion": "v1",
"metadata": {
"selfLink": "something",
"resourceVersion": "something"
},
"items": [
{
"status": {
"containerStatuses": [
{
"name": "thisismyname"
}
]
}
}
]
}
您为什么使用gson模拟JSON.parse?
[使用JSON.parse获取JsonObject:
JsonObject data = JSON.parse(myjsoncontent);
JsonArray items = data.get("items").getAsJsonArray();
for(JsonElement element : items){
JsonObject object = element.getAsJsonObject();
JsonArray containerstatuses = object.get("status").getAsJsonObject().get("containerStatuses").getAsJsonArray().get(0).get("name").getAsString();
}
如果要改用gson,则应创建一个与json数据匹配的类,作为:
public class ApiResponse {
private String kind;
private String apiVersion;
private Metadata metadata;
private List<Item> items;
class Metadata {
private String selfLink;
private String resourceVersion;
}
class Item {
private List<StatusContainer> status;
}
class StatusContainer {
private String name;
}
}
然后执行:
ApiResponse response = gson.fromJson(myjsoncontent, ApiResponse.class);
这样,响应对象将包含已解析的json的所有数据。
您必须更改
.get(0).get("name")
到
.get(0).getAsJsonObject().get("name")
JsonArray
在您对其进行迭代时返回JsonElement
s
object.get("status").getAsJsonObject().get("containerStatuses").getAsJsonArray().get(0).getAsJsonObject().get("name").getAsString();