Json Response-访问数组中的对象

时间:2019-05-06 10:26:22

标签: arrays json rest-assured

我正在尝试访问Json响应中的对象,但不确定如何操作。我如何使用安心访问ID 11,其中ObjID1和ObjID2是唯一的UUID?

       "ObjID1": [
            {
                "ID": "11",
                "NAME": "XYZ",
                "GENDER": "M"
            }
        ]

        "ObjID2": [
            {
                "ID": "12",
                "NAME": "Z",
                "GENDER": "F"
            }
        ]


1 个答案:

答案 0 :(得分:0)

要声明元素的值,可以使用

function valueSeq(coll, searchVal) {
  return coll.valueSeq().get(searchVal);
}

function indexedSeq(coll, searchVal) {
  return coll.toIndexedSeq().get(searchVal);
}

function toArray(coll, searchVal) {
  return coll.toArray()[searchVal];
}

function toList(coll, searchVal) {
  return coll.toList().get(searchVal);
}

function arrayRange(len) {
  return new Array(len).fill(null).map((_, i) => `thing ${i}`);
}

function timeGet(checkWhat, coll, find, iters) {
  let startTime = performance.now();
  let size = coll.length || coll.size;
  for (let i = 1; i < iters; i++) {
    let searchVal = i % coll.size,
      result = find(coll, searchVal);
      if(result != `thing ${searchVal}`){
        console.log('fail', searchVal, `"${result}"`);
      }
  }
  return Math.floor(performance.now() - startTime);
}

const MIN_LEN = 10,
  MAX_LEN = 1e4,
  ITERS = 2000;
  


console.log('\t\t\tindexedSeq\ttoArray\t\ttoList\t\tkeyedSeq');
for (let len = MIN_LEN; len <= MAX_LEN; len *= 10) {
  const immutOrderedSetRange = Immutable.OrderedSet(arrayRange(len));
  console.log(`${len}\t\t\t` +
    `${timeGet('indexedSeq', immutOrderedSetRange, indexedSeq, ITERS)}\t\t` +
    `${timeGet('toArray', immutOrderedSetRange, toArray, ITERS)}\t\t` +
    `${timeGet('toList', immutOrderedSetRange, toList, ITERS)}\t\t` +
    `${timeGet('valueSeq', immutOrderedSetRange, valueSeq, ITERS)}`)
}

使用<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/4.0.0-rc.12/immutable.js"></script>索引then().body("ObjID1.ID[0]", equalTo("11")) 字段可让您获取数组中第一个JSON对象的ID。

如果要获取此值以进行进一步处理,则可以像这样提取它:

ID

我们解析了JSON,并使用[0]方法将JSON对象数组保存在HashMaps列表中。列表中的每个元素都是JSON对象。

要访问第一个JSON对象,您可以使用

JsonPath path = JsonPath.from("json file or json String");
List<HashMap<String, Object>> listOfJsonObjects = path.get("ObjID1");

然后,使用经典的HashMap方法,您可以像这样在JSON对象中获取特定元素:

path.get

以上内容将返回HashMap<String, Object> jsonObject = listOfJsonObjects.get(0); 请注意,您必须强制转换为String才能获取值。 HashMap中的值是对象,因为数组中的JSON对象可能包含嵌套的数组或对象。

jsonObject.get("ID");