#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);
}