我有一些从测试方法中的json文件接收到的api参数。现在,我需要将此对象转换为列表,因为它包含我想单独处理的数组。
@SuppressWarnings("unchecked")
static Optional getQueryParametersTEST(JsonObject inputJsonObject) {
JsonObject operators = inputJsonObject.getJsonObject("operators");
JsonObject tez = operators.getJsonObject("tez");
JsonArray parameters = tez.getJsonArray("parameters");
Optional<JsonObject> queryParameters = parameters.stream().
filter(JsonObject.class::isInstance).
map(JsonObject.class::cast).
filter(jsonObject -> jsonObject.getJsonObject("queryParameters") != null).
map(item -> item.getJsonObject("queryParameters")).
findFirst();
return queryParameters;
}
在我收到queryParameters之后,它采用这种格式
Optional[{"priceMin":["0"],"priceMax":["150000"],"currency":["5561"],"hotelClassId":[""],"accommodationId":["158525","9002884","1"],"rAndBId":["15350","2424","2474","2749","5737","5738"]}
我该怎么做以获取字符串列表
我尝试执行
return queryParameters.ifPresent(newList::add)
.flatMap(Optional::stream)
.collect(Collectors.toList());
尝试使用此方法,但是Jsonobject需要字符串源,但是我有类型为optional queryParameters的queryParameters JSONObject obj =新的JSONObject(我的来源应该是查询参数)
List<String> list = new ArrayList<String>();
JSONArray array = obj.getJSONArray("interests");
for(int i = 0 ; i < array.length() ; i++){
list.add(array.getJSONObject(i).getString("interestKey"));
}
JSONObject obj = new JSONObject("{interests : [{interestKey:Dogs}, {interestKey:Cats}]}");
List<String> list = new ArrayList<String>();
JSONArray array = obj.getJSONArray("interests");
for(int i = 0 ; i < array.length() ; i++){
list.add(array.getJSONObject(i).getString("interestKey"));
}