反序列化 json 数组并使用放心提取值
Deserialize json array and extract value using rest assured
我是java,json,新手放心,努力工作学习如何测试休息api。我有一个返回的数组作为放心的响应:
Response response = given(getProjectInfoRequest).get();
response.asString();
{
"options": [
{
"text": "111",
"label": "ABC"
},
{
"text": "222",
"label": "DEF"
},
{
"text": "333",
"label": "GHI"
}
]
}
我想提取标签值的文本值 "DEF",我该怎么做?
请注意,在阅读了这么多帖子后,到目前为止我已经完成了以下工作:
1. Options[] options = given(getProjectInfoRequest).when().get().as(Options[].class);
this was giving me exception :
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
then I tried below:
2. Options options = gson.fromJson(response.asString(), Options.getClass());
this at least resolved the above issue.
public class Options {
public String getLabel() {
return label
}
public void setLabel(String label) {
this.label = label
}
public String getValue() {
return value
}
public void setValue(String value) {
this.value = value
}
public String label;
public String value;
}
从这一点来看,我不确定如何遍历文本和值数组来提取我需要的内容,请你们提供意见?
请原谅我的无知,问了这么一个基本的问题。
也请给我推荐一个好的source/way来学习这个。
提前致谢!
U can use Gson - 这是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。
JsonParser parser = new JsonParser();
JsonObject o = (JsonObject)parser.parse(response.asString());
for (Map.Entry<String,JsonElement> entry : o.entrySet()) {
JsonArray array = entry.getValue().getAsJsonArray();
for (JsonElement elementJSON : array) {
[...]
}
}
我是java,json,新手放心,努力工作学习如何测试休息api。我有一个返回的数组作为放心的响应:
Response response = given(getProjectInfoRequest).get();
response.asString();
{
"options": [
{
"text": "111",
"label": "ABC"
},
{
"text": "222",
"label": "DEF"
},
{
"text": "333",
"label": "GHI"
}
]
}
我想提取标签值的文本值 "DEF",我该怎么做?
请注意,在阅读了这么多帖子后,到目前为止我已经完成了以下工作:
1. Options[] options = given(getProjectInfoRequest).when().get().as(Options[].class);
this was giving me exception :
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
then I tried below:
2. Options options = gson.fromJson(response.asString(), Options.getClass());
this at least resolved the above issue.
public class Options {
public String getLabel() {
return label
}
public void setLabel(String label) {
this.label = label
}
public String getValue() {
return value
}
public void setValue(String value) {
this.value = value
}
public String label;
public String value;
}
从这一点来看,我不确定如何遍历文本和值数组来提取我需要的内容,请你们提供意见?
请原谅我的无知,问了这么一个基本的问题。 也请给我推荐一个好的source/way来学习这个。
提前致谢!
U can use Gson - 这是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。
JsonParser parser = new JsonParser();
JsonObject o = (JsonObject)parser.parse(response.asString());
for (Map.Entry<String,JsonElement> entry : o.entrySet()) {
JsonArray array = entry.getValue().getAsJsonArray();
for (JsonElement elementJSON : array) {
[...]
}
}