Как получить значение ключа из списка массивов, в котором есть объекты JSON

#json #rest-assured #rest-assured-jsonpath

#json #будьте уверены #будьте уверены -jsonpath

Вопрос:

 List<String>ownerLst= new ArrayList<String>();
ownerLst= Util.extractListFromResponse(apiResponse, "", "", "owner");

public static List <String>extractListFromResponse(Response apiResponse, String keyToMatch, String valueToMatch, String getValueOfKey) {
        List<String> currLst = new ArrayList<String>();
        JSONObject json;
        try {
            json = (JSONObject) parser.parse(apiResponse.asString());
            String str;
            if (keyToMatch == "" amp;amp; valueToMatch == "") {
                str = "$..results[*]."   getValueOfKey.trim();
            } else {
                str = "$..results[?(@."   keyToMatch.trim()   "=='"   valueToMatch.trim()   "')]."
                          getValueOfKey.trim()   "";
            }
            
            currLst = JsonPath.read(json, str);
            logger.info("extractListFromResponse - Current List: "   currLst);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return currLst;
    }
 

currLst возвращает это — [{«firstname»:»xxx»,»inactive»:false] // Объект JSON

Итак, ownerLst имеет [{«firstname»:»xxx»,»inactive»:false] // Объект JSON

Теперь я хочу получить значение («xxx») ключа «firstname». Как мне это сделать?

Ответ №1:

попробуйте приведенный ниже фрагмент :

  JSONParser jp = new JSONParser();
    Object object = jp.parse("[{"firstname":"xxx","inactive":false}]");
    List<JSONObject> objects=null;
    if ( object instanceof JSONArray) {
         objects = (JSONArray) object;
    }

    for ( JSONObject jsonObject :  objects)
     {
         Object name =  jsonObject.get("firstname");
         System.out.println(name);
     }