2
我是一個java,json,放心的新手,並試圖工作和學習如何測試休息api。我有一個數組返回一個放心的迴應:反序列化json數組並提取值使用放心
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;
}
從這一點來說,我不知道我怎樣才能通過文字和值的數組迭代來提取我需要什麼,請你們能提供你的投入嗎?
請原諒我對這個基本問題的無知。 請也建議我一個很好的來源/方式來了解這一點。
在此先感謝!
感謝您的快速響應。出於某種原因,我無法將RestAssured響應轉換爲JsonObject。我嘗試了下面的代碼: JsonParser jsonParser = new JsonParser(); JsonObject object = jsonParser.parse(response.asString())。getAsJsonObject();我試過 JsonElement element = new JsonPrimitive(response.asString()); JSONObject object = element.getAsJsonObject(); 他們兩個拋出異常: java.lang.IllegalStateException:不是一個JSON對象:[{「值」:」 ...... 任何建議 – Vikas
我修改了代碼 –
由於一噸的人,我是如此我昨天晚上/早上停留了一段時間:)我確實需要修改一下,但是之後它仍然有效,下面是我需要修改的部分: (Map.Entry entry:object.entrySet()) (JsonObject objJSON:array){...這裏有一些代碼} –
Vikas