【问题标题】:how to add an element in a json body from pre-request or datafile?如何从预请求或数据文件中添加 json 正文中的元素?
【发布时间】:2019-04-30 02:58:34
【问题描述】:

试图弄清楚如何在 net.d 下插入新行。 基本上我需要弄清楚有多少已经在那里,所以我不重叠它,并附加一个新的。

原文: { "jsonrpc": "2.0", “方法”:“更新”, “参数”:{ “视频”:10, “_更新”: { “数据”: { “兰”:{ “网”: [ {"id":1,"name": "FIRST"}, {"id":15,"name": "SECOND"} ] } } } }, “身份证”:1 }

想补充:

{ “身份证”:8, “名称”:“第三” }

所以最终会是 新的 { "jsonrpc": "2.0", “方法”:“更新”, “参数”:{ “视频”:10, "_update": {"data": {"lan": {"net": [{"id":1,"name": "FIRST"},{"id":15,"name": "SECOND" },{"id": 8,"name": "THIRD"}]}}}},"id": 1}

澄清: 我将创建一个检索 json 数据的 POST - 这不是固定的,每次运行 POST 时它可能有更多或更少的元素。

我想在这个 json 中添加一些东西,并用它来 POST 到另一个请求中。

我想我可以使用 TEST 将回复存储在 env.variable 中,这部分有效, 然后将此 env.variable 用作另一个 POST 中的主体,这也可以

现在我只需要弄清楚如何将一些东西添加到我在第一个 POST 中收集的 JSON 中,这是最初的问题 :)

【问题讨论】:

  • 顺便说一句,它可以从数据文件中读取它,也可以在预请求期间读取它
  • 实际上我想出了如何在 json 正文中添加一个元素。我只需要知道如何确保将其添加到该数组的最后一个元素中

标签: json postman


【解决方案1】:

第三个条目如何存储在数据文件中?

如果将其存储为字符串,我建议采用务实的方式: 只需将变量添加到 JSON 正文中(但不要忘记逗号)。

{
    "jsonrpc": "2.0",
    "method": "update",
    "params": {
        "vid": 10,
        "_update": {
            "data": {
                "lan": {
                    "net": [
                        {
                            "id": 1,
                            "name": "FIRST"
                        },
                        {
                            "id": 15,
                            "name": "SECOND"
                        },
                        {{data_value}}
                    ]
                }
            }
        }
    },
    "id": 1
}

如果数据单独存储,例如作为 id 和 name,只需将其添加到您的预请求脚本中:

var myNewObject = { id : data.id, name:data.name};
pm.globals.set("myNewObject", JSON.stringify(myNewObject));

这个 sn-p 将添加一个带有 id 和 name 的新对象,并使用数据文件中的数据 id 和 name 设置它。它将被存储为全局变量 myNewObject,可以在您的正文中使用(不要忘记逗号 ;-)):

{
    "jsonrpc": "2.0",
    "method": "update",
    "params": {
        "vid": 10,
        "_update": {
            "data": {
                "lan": {
                    "net": [
                        {
                            "id": 1,
                            "name": "FIRST"
                        },
                        {
                            "id": 15,
                            "name": "SECOND"
                        },
                        {{myNewObject}}
                    ]
                }
            }
        }
    },
    "id": 1
}

另一个想法是将整个“网络”数组存储在一个变量中。您可以将新对象附加到此数组。但在这种情况下,整个“网络”数组必须是已知的(例如,来自全局变量)。

JsonBody

{
    "jsonrpc": "2.0",
    "method": "update",
    "params": {
        "vid": 10,
        "_update": {
            "data": {
                "lan": {
                    "net": {{netArray}}
    },
    "id": 1
}

预请求脚本

var myNewObject = { id : data.id, name:data.name};
var netArray = JSON.parse(pm.globals.get("netArray"));
netArray.push(myNewObject); //<-- Adds new object to the array
pm.globals.set("netArray", JSON.stringify(netArray));

【讨论】:

  • 非常感谢您的回复,我面临的挑战实际上是 2 倍。一方面,是的,我可以按照你说的做,但问题是正文内容不固定,我必须从另一个请求中获取,然后用这个新条目添加到现有条目中更新它,可能是 1、2 ,或更多条目 - 我只有在获取正文后才会知道。 ://
  • 不客气。但是如果请求正文没有修复。那它是怎么产生的呢?整个请求体是否是在先前请求中生成的变量?
  • 对不起,我想我需要更好地澄清一下。我将创建一个 POST 来检索一个 json 我想在这个 json 中添加一些东西并使用它来将它发布到另一个请求中。我想我可以使用 TEST 将回复存储在 env.variable 中,该部分有效,然后将其用作另一个 POST 中的主体,这也有效,现在我只需要弄清楚如何在我收集的 JSON 中添加一些东西我的第一篇文章。
  • 其实你的回答让我大吃一惊,但我相信这正是我需要的:) 我会试一试,很快就会告诉你
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 2021-06-28
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多