如何从邮递员的json响应中提取值,其密钥为'。'在里面

时间:2017-10-14 11:38:09

标签: json response postman

从邮递员那里得到json响应中的密钥值非常简单:

from datetime import datetime
import time
import os

from apscheduler.schedulers.background import BackgroundScheduler


def tick():
    print('Tick! The time is: %s' % datetime.now())


if __name__ == '__main__':
    scheduler = BackgroundScheduler()
    scheduler.add_job(tick, 'interval', seconds=3)
    scheduler.start()
    print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))

    try:
        # This is here to simulate application activity (which keeps the main thread alive).
        while True:
            time.sleep(2)
    except (KeyboardInterrupt, SystemExit):
        # Not strictly necessary if daemonic mode is enabled but should be done if possible
        scheduler.shutdown()

对于JSON响应

pm.test("AddCluster", function () {
    var jsonData = pm.response.json();
    pm.globals.set("taskIdCluster", jsonData.value);    
});

我无法在以下情况下提取json值,其中key具有'。'作为其字符串的一部分。任何人都可以帮助我。

{
    "value": "task-1405"
}

我尝试了以下代码:

"result": {
        "cluster.moid": "domain-c433242"
    }

2 个答案:

答案 0 :(得分:1)

可以想出为上述情况提取值,以下代码可以

pm.test("StatusForAddClusterApplyCheck", function () {
    var jsonData = pm.response.json();
    var result = jsonData.result;
    var jsonString = JSON.stringify(result).substring(17,31);
    pm.environment.set("clusterMoid", jsonString);
});

但是只有字符串长度是常量。

案例字符串长度的任何其他答案都是动态的吗?

答案 1 :(得分:0)

在javascript中(以及在邮递员中),可以使用'。'访问对象属性。运算符或使用[]的关联数组索引。 JSON对象也是如此。

即。 object.key 等同于 object [“ key”]

这应该为您解决问题:

pm.test("AddCluster", function () {
    var jsonData = pm.response.json();
    pm.globals.set("taskIdCluster", jsonData["cluster.moid"]);
});