如何使用 Postman 将 JSON 对象作为 JSON 字符串发送?

Posted

技术标签:

【中文标题】如何使用 Postman 将 JSON 对象作为 JSON 字符串发送?【英文标题】:How to send JSON object as JSON String with Postman? 【发布时间】:2018-06-27 06:44:43 【问题描述】:

我想发送一个 JSON 请求,但问题是我需要将我的 userPropertiesAsJsonString 字段作为 JSON 字符串发送。

如何将 userPropertiesAsJsonString 作为 JSON 字符串发送?


    "User" : 
        "userId" : "11111",
        "userPropertiesAsJsonString" : ?
    

userPropertiesAsJsonString 是;


    "properties" : 
        "propertyName" : "test",
        "propertyDesc" : "desc"
    

【问题讨论】:

在 Postman 中粘贴您在此处发布的内容有什么问题?如果我没记错的话应该可以工作。只需确保引号用\" 转义,而不仅仅是" 如果这是在 javascript 中,你不能在那里做JSON.stringify(userPropertiesAsJsonString) 吗? 【参考方案1】:

试试这个:


    "User" : 
        "userId" : "11111",
        "userPropertiesAsJsonString" : "\"properties\" : \"propertyName\" : \"test\",\"propertyDesc\" : \"desc\""
    

【讨论】:

这必须在一行中,这是一个相当糟糕的解决方案。我希望我们可以使用'' 或(反引号)【参考方案2】:

Jason Mullings' 的回答对我不起作用,但它是一个很好的基础,让我能够为与您的问题非常相似的问题提出解决方案。

在预请求脚本选项卡中,

const userPropertiesAsJsonString = 
    "properties" : 
        "propertyName" : "test",
        "propertyDesc" : "desc"
    


pm.environment.set(
    'userPropertiesAsJsonString',
    JSON.stringify(JSON.stringify(userPropertiesAsJsonString))
);

然后,在“正文”选项卡中,


    "User" : 
        "userId" : "11111",
        "userPropertiesAsJsonString" : userPropertiesAsJsonString
    

userPropertiesAsJsonString 变量进行两次字符串化将允许您转义 JSON 字符串(从this answer 获得的解决方案;有关更详细的说明,请参阅this gist),然后您将获得一个看起来像这样的请求正文sanatsathyan提供的答案中的那个。

【讨论】:

使用 JSON.stringify 两次很棒,它是 Postman 中唯一对我有用的解决方案,谢谢。 @sabriele 很高兴能得到一些帮助 ;-)【参考方案3】:

预请求脚本:

let query = 

pm.environment.set('query', JSON.stringify(query));

正文:

query

【讨论】:

嵌套的 JSON 需要转义,所以不起作用【参考方案4】:

由于 JSON 表示 JavaScript Object Notation,因此您只需将 userPropertiesAsJsonString 复制到原始 JSON 中即可:


    "User" : 
        "userId" : "11111",
        "userPropertiesAsJsonString" : 
            "properties" : 
                "propertyName" : "test",
                "propertyDesc" : "desc"
            
        
    

将此 JSON 复制并粘贴到 Postman 请求正文(原始格式)并设置标头“Content-Type: application/json”。

如果你必须在请求之前做更多花哨的事情,你可以在 Postman 中执行一个预请求脚本:https://www.getpostman.com/docs/postman/scripts/pre_request_scripts

有关 JSON 的更多信息,请参见此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON

【讨论】:

这就是我想要的,只使用原始 JSON 而不是字符串 - 因为它使用 Postman 来 POST 请求有效负载,JSON.stringify() 将无法工作,因为应用程序将失败验证,因为它检查架构是有效的 JSON。

以上是关于如何使用 Postman 将 JSON 对象作为 JSON 字符串发送?的主要内容,如果未能解决你的问题,请参考以下文章

Postman 从控制台导出 JSON 对象

如何通过 Postman 以 JSON 格式在请求正文中发送对象数组?

使用 Postman 发送(嵌套)json 对象和文件

如何通过 Post 方法使用 JSON 模型将 JSON 字典作为参数传递?

Postman 400 错误请求

postman如何传递对象数组