如何将Optional <jsonobject>转换为List <string>

时间:2018-07-11 06:24:35

标签: java

我有一些从测试方法中的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"));
    }

0 个答案:

没有答案