How to convert Optional<JsonObject> to List<String>

By | July 12, 2018
Questions:

I have some api parameters which I have received from a json file in test method. Now I need to convert this object to a list, because it contains arrays that I would like to handle individually.

 @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; 
    }

after i received queryParameters it comes in this format

Optional[{"priceMin":["0"],"priceMax":["150000"],"currency":["5561"],"hotelClassId":[""],"accommodationId":["158525","9002884","1"],"rAndBId":["15350","2424","2474","2749","5737","5738"]}

What can i do to get a list of Strings

I tried to perform a

return  queryParameters.ifPresent(newList::add)
            .flatMap(Optional::stream)
            .collect(Collectors.toList());

Tried using this but Jsonobject requires a source of string but i have queryParameters of type Optional queryParameters
JSONObject obj = new JSONObject(my source should be the query param )

    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"));
    }
Answers:

Leave a Reply

Your email address will not be published. Required fields are marked *