我是一个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;
}
从这一点来说,我不确定如何迭代文本和值的数组以提取我需要的东西,请你们提供你的输入吗?
请原谅我对提出这样一个基本问题的无知。 还请建议我学习这个的好方法/方法。
提前致谢!
答案 0 :(得分:3)
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) {
[...]
}
}