Postman怎么在JSON里传另一段JSON文本_Postman嵌套JSON字符串处理方法

浅晨姑娘_7636

浅晨姑娘_7636

2026-11-06

506人浏览

原创

旧版Postman预请求脚本中需对biz_content内嵌object(非Array)递归执行JSON.stringify并双重转义双引号和反斜杠,其他字段保持原样,且必须先JSON.parse(request.data)再JSON.stringify(data)写回,否则请求体失效。

postman怎么在json里传另一段json文本_postman嵌套json字符串处理方法

旧版Postman预请求脚本里怎么递归处理biz_content嵌套对象

旧版Postman不支持pm语法,只能用request.data读写原始请求体,且必须手动JSON.parse/JSON.stringify。核心难点不是“怎么转字符串”,而是“哪些字段要转、什么时候停止递归”。

  • 只对biz_content字段做处理,其他字段(如method、sign)保持原样
  • 递归逻辑必须跳过string、number、null、boolean类型,只对object且非Array的值调用JSON.stringify
  • 不能直接JSON.stringify(obj)后塞回去——这会导致双引号被转义成"或反斜杠爆炸,必须用JSON.stringify(val).replace(/"/g, '\"').replace(/\/g, '\\')预处理
  • 示例脚本片段:
    var data = JSON.parse(request.data);
    if (data.biz_content) {
      function stringifyNested(obj) {
        for (var k in obj) {
          if (obj.hasOwnProperty(k) && typeof obj[k] === 'object' && obj[k] !== null && !Array.isArray(obj[k])) {
            obj[k] = JSON.stringify(obj[k]).replace(/"/g, '\"').replace(/\/g, '\\');
            stringifyNested(obj[k]); // 注意:此时obj[k]已是字符串,这行实际无效,仅保留结构示意
          }
        }
      }
      stringifyNested(data.biz_content);
    }
    request.data = JSON.stringify(data);

为什么不能用JSON.stringify(biz_content)一步到位

因为biz_content本身是顶层对象,但它的某些子字段(如info、doclist)需要变成字符串,而其他字段(如user_id、timestamp)仍是普通字段。一步JSON.stringify会把整个biz_content变成一个大字符串,后端收不到结构化字段。

  • 错误做法:data.biz_content = JSON.stringify(data.biz_content) → 后端收到的是{"biz_content": "{...}"},无法按key取值
  • 正确目标:{"biz_content": {"user_id": 123, "info": "{"name":"Alice"}", "doclist": "[{"id":1}]"}}
  • 关键点:只对指定嵌套层级的object值做JSON.stringify,不是对整个biz_content对象

Content-Type设成application/json但后端仍报解析失败

常见于字段值被双重序列化——比如info字段本该是字符串"{"name":"Alice"}",结果被当成JSON对象再解析一次,抛出Unexpected token in JSON at position 1。

Postman 12.27.7
Postman 12.27.7

Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。

下载
  • 检查预请求脚本是否对同一字段重复执行了JSON.stringify(例如递归没设终止条件,info被转一次,再进stringifyNested又转一次)
  • 确认后端接收逻辑:如果用request.get_json()(Flask)或JSONObject(Java),它默认只解析最外层;若业务代码里又对info字段调了new JSONObject(infoStr),那传入的info必须是合法JSON字符串,不能带多余空格或换行
  • 临时验证方法:在预请求脚本末尾加console.log(request.data),发送前看Console输出是否符合预期格式

form-data里混传文件和JSON字符串怎么避免格式错乱

当Body选form-data时,biz_content必须作为独立文本字段传,且Content-Type必须显式设为text/plain,否则Postman会自动加Content-Type: application/json头,导致multipart边界被破坏。

  • 操作路径:Body → form-data → 新增键biz_content → 值填{"user_id":123,"info":{"name":"Alice"}} → 点击该行右侧下拉箭头 → 选择Text → 再点右侧Content-Type字段 → 改为text/plain
  • 切勿勾选JSON选项:form-data模式下没有“JSON”开关,那个选项只在raw模式生效
  • 如果后端要求biz_content是JSON字符串而非对象,那这里填的值本身就该是"{"user_id":123,"info":"{\"name\":\"Alice\"}"}",即已转义好的字符串

最易忽略的一点:旧版Postman的request.data是字符串,不是对象,任何修改都必须先JSON.parse再JSON.stringify,漏掉任意一环都会让请求体变空或格式错乱。别依赖“看起来像JSON”就以为没问题,用console.log打出来看真实内容。

相关专题

更多
软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

2023.10.13

5070

8

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1878

5

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

3024

5

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

2023.10.24

6284

49

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2023.11.24

6269

6

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

2024.03.22

7854

16

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2024.04.29

11954

11

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

2025.07.29

6179

17

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.07

6887

13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Apipost从入门到精通
Apipost从入门到精通

共31课时 | 3.5万人学习

apipost极速入门
apipost极速入门

共6课时 | 0.6万人学习