gpt4 book ai didi

java - 如何使用json节点解析json数组值

转载 作者:行者123 更新时间:2023-12-05 00:41:28 26 4
gpt4 key购买 nike

我有一个 JsonNode其中包含以下 JSON。里面JsonNode对象是一个数组。在那个数组中有三个字段,其中之一,slaid , 是一个列表。另外两个是字符串。这是 JSON。

{
"SLA": [
{
"slaid": [
"53637cc144ae8b607e089701"
],
"ragindicator": "Red",
"name": "r1"
},
{
"slaid": [
"53637d1844ae8b607e089704"
],
"ragindicator": "Amber",
"name": "a1"
},
{
"slaid": [
"53637eac44ae8b607e089706"
],
"ragindicator": "Green",
"name": "g1"
}
]
}

我想解析这个值。我如何解析它,在哪里 slaid的类型是 List<String> ?我已经尝试了一些方法,但我仍然无法找到解决方案。

最佳答案

我能看到的最简单的方法是创建适合您的 JSONPOJO 类:

class Slaids {

@JsonProperty("SLA")
private List<Slaid> slaids;

public List<Slaid> getSlaids() {
return slaids;
}

public void setSlaids(List<Slaid> slaids) {
this.slaids = slaids;
}

@Override
public String toString() {
return slaids.toString();
}
}

class Slaid {

private List<String> slaid;
private String ragindicator;
private String name;

public List<String> getSlaid() {
return slaid;
}

public void setSlaid(List<String> slaid) {
this.slaid = slaid;
}

public String getRagindicator() {
return ragindicator;
}

public void setRagindicator(String ragindicator) {
this.ragindicator = ragindicator;
}

public String getName() {
return name;
}

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

@Override
public String toString() {
return "Slaid [slaid=" + slaid + ", ragindicator=" + ragindicator + ", name=" + name + "]";
}
}

简单用法:

ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.readValue(json, Slaids.class));

以上程序打印:

[Slaid [slaid=[53637cc144ae8b607e089701], ragindicator=Red, name=r1], Slaid [slaid=[53637d1844ae8b607e089704], ragindicator=Amber, name=a1], Slaid [slaid=[53637eac44ae8b607e089706], ragindicator=Green, name=g1]]

如果你想使用JsonNode,你可以这样做:

ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(json);
ArrayNode slaidsNode = (ArrayNode) rootNode.get("SLA");
Iterator<JsonNode> slaidsIterator = slaidsNode.elements();
while (slaidsIterator.hasNext()) {
JsonNode slaidNode = slaidsIterator.next();
System.out.println(slaidNode.get("slaid"));
System.out.println(slaidNode.get("ragindicator"));
System.out.println(slaidNode.get("name"));
}

以上程序打印:

["53637cc144ae8b607e089701"]
"Red"
"r1"
["53637d1844ae8b607e089704"]
"Amber"
"a1"
["53637eac44ae8b607e089706"]
"Green"
"g1"

关于java - 如何使用json节点解析json数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23499721/

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