使用 Gson 获取 Json 的值
Get value of Json With Gson
我不是来获取容器状态的名称的。
我试过这个(关于先例post),在get("name") with "The method get(String) is undefined for the type JsonElement".
上报错
感谢帮助
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?正在用大锤敲坚果
如果您想使用 gson,最好创建一个 class 来匹配您的 json 数据,如:
public class ApiResponse {
private String kind;
private String apiVersion;
private Metadata metadata;
private List<Item> items;
public List<String> getAllNames() {
List<String> allNames = new ArrayList();
for (Item item: items) {
allNames.add(item.getStatus().get(0).getName());
}
return allNames;
}
public String getFirstName() {
if (items.length == 0 || items.get(0).getStatus().length == 0) {
return "";
}
return items.get(0).getStatus().get(0).getName();
}
class Metadata {
private String selfLink;
private String resourceVersion;
}
class Item {
private List<StatusContainer> status;
List<StatusContainer> getStatus() {
return status;
}
}
class StatusContainer {
private String name;
String getName() {
return name;
}
}
}
然后执行:
ApiResponse response = gson.fromJson(myjsoncontent, ApiResponse.class);
String firstName = response.getFirstName();
这样,响应对象将包含已解析的所有数据json。请注意,如果保持私有,您需要添加 getter 才能访问此属性。
无需模拟 JSON.parse 的结果并具有 JsonObject、JsonArray...
你必须改变
.get(0).get("name")
到
.get(0).getAsJsonObject().get("name")
JsonArray
returns JsonElement
遍历它时
将数组元素作为对象获取,因为它的结构为对象
.getAsJsonArray().get(0).getAsJsonObject().get("name").getAsString();
我不是来获取容器状态的名称的。 我试过这个(关于先例post),在get("name") with "The method get(String) is undefined for the type JsonElement".
上报错感谢帮助
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?正在用大锤敲坚果
如果您想使用 gson,最好创建一个 class 来匹配您的 json 数据,如:
public class ApiResponse {
private String kind;
private String apiVersion;
private Metadata metadata;
private List<Item> items;
public List<String> getAllNames() {
List<String> allNames = new ArrayList();
for (Item item: items) {
allNames.add(item.getStatus().get(0).getName());
}
return allNames;
}
public String getFirstName() {
if (items.length == 0 || items.get(0).getStatus().length == 0) {
return "";
}
return items.get(0).getStatus().get(0).getName();
}
class Metadata {
private String selfLink;
private String resourceVersion;
}
class Item {
private List<StatusContainer> status;
List<StatusContainer> getStatus() {
return status;
}
}
class StatusContainer {
private String name;
String getName() {
return name;
}
}
}
然后执行:
ApiResponse response = gson.fromJson(myjsoncontent, ApiResponse.class);
String firstName = response.getFirstName();
这样,响应对象将包含已解析的所有数据json。请注意,如果保持私有,您需要添加 getter 才能访问此属性。
无需模拟 JSON.parse 的结果并具有 JsonObject、JsonArray...
你必须改变
.get(0).get("name")
到
.get(0).getAsJsonObject().get("name")
JsonArray
returns JsonElement
遍历它时
将数组元素作为对象获取,因为它的结构为对象
.getAsJsonArray().get(0).getAsJsonObject().get("name").getAsString();