2017-02-24 179 views
0

基本上我使用GET调用来触发一组API,它在json中返回数据,并且我想仅打印如下面的json代码段中提到的hostid之类的特定字符串。如何从selenium webdriver中的json中返回数据的API读取数据?

"hostId" : 286, 
    "parentSectionName" : "adadfr", 
    "rank" : 86096.0, 
    "activationStatus" : "ACTIVE", 
    "overrideLinkProp" : 0, 
+0

有各种天秤座你可以根据你使用的语言来解析'JSON'。选一个对你看起来很好的人。它可能是你的'selenium'测试的一部分,但是你不会使用'selenium'库来处理'JSON'对象。 – mrfreester

回答

1

假设你的JSON看起来像这样:

 String jsonToDecode = "{" + 
     " \"hostId\" : 286,\n" + 
      " \"parentSectionName\" : \"adadfr\",\n" + 
      " \"rank\" : 86096.0,\n" + 
      " \"activationStatus\" : \"ACTIVE\",\n" + 
      " \"overrideLinkProp\" : 0,"+ 
      "}"; 

您可以使用 “com.googlecode.json - 简单的” 包装像这样对其进行解码:

JSONParser parser = new JSONParser(); 
    Object parsedJson = new Object(); 
    try { 
     parsedJson = parser.parse(jsonToDecode); 
    } catch (ParseException e) { 
     //do something when json parsing fails 
    } 
    JSONObject jsonObject = (JSONObject) parsedJson; 
    String name = (String) jsonObject.get("parentSectionName"); 
    System.out.print(name); // will output adadfr 
+0

伟大的Java示例,谢谢 – mrfreester

0

在java中你可以使用JsonPath:

String jsonToDecode = "{" + 
     " \"hostId\" : 286,\n" + 
      " \"parentSectionName\" : \"adadfr\",\n" + 
      " \"rank\" : 86096.0,\n" + 
      " \"activationStatus\" : \"ACTIVE\",\n" + 
      " \"overrideLinkProp\" : 0,"+ 
      "}"; 
System.out.println(JsonPath.from(jsonToDecode).getString("hostId"));