JSON body字段插入表现
问题描述
在调用接口的时候,请求体中会存在插入表单中各个字段的情况,但是对于插入之后的表现是如何不清楚。所以该篇文档介绍了字段插入之后的表现。
文档作用
帮助用户很好了解字段插入后呈现的表现形式是如何的
插入字段表现

插入规则:
当上述按钮【开启】时,单值字段(string类型/int类型)会以字段填入值插入,系统不会自动带上双引号。
当上述按钮【关闭】时,单值字段(string类型)会以字段填入值插入,系统并且会自动带上双引号后插入。int类型字段(数字/电话字段),系统不会自动带上双引号。
无论按钮【开启】/【关闭】时,多值字段(array类型),系统都会自动带上双引号后插入(仅针对一维数组有效,多维只生效最后一层)。
如果页面无该按钮时,一律视为按钮【关闭】处理。
字段类型分类:
单值字段(string类型):【单行文字】、【多行文字】、【链接】、【日期】、【起止时间】、【邮箱】、【单项选择】、【下拉选择】、【地址】、【描述文字】、【富文本】、【定位】、【数据关联】
单值字段(int类型):【数字】、【电话】
多值字段(array类型):【表格】、【多项选择】、【图片选择】、【附件上传】、【引用】、【成员】、【部门】
注意:
1、其中多值字段中,除了表格字段外,其他字段也可作为单值字段(string类型)输出,即只选择一个内容进行输出。
2、body中数组插入【表格】子字段时,只能插入单值字段,无法插入多值字段(array类型),否则json body体会报错。除非【表格】数组元素对象仅且只有一个时,才可插入多值字段(array类型)。
3、body中数组如果是多维数组,系统只会对最后一层数组插入字段自动加上引号并且进行扩充。


{
"表格": [
{
"表格列1":单行文字,
"表格列":表格列1 表格列2,
"tb": [
{
"cc": "表格列11"
},
{
"cc": "表格列22"
}
]
}
]
}
字段为空时
当字段为空值时,插入到json body中会以null值传入。
按钮【开启】时
单值字段(string类型)
这里只以单行文字为例,其他同类型字段同理

{
"单行文字": "null"
}
单值字段(int类型)
这里只以数字为例,其他同类型字段同理

{
"数字": null
}
多值字段(array类型)
表格
数组元素对象中仅允许插入单值字段。除非【表格】数组元素对象仅且只有一个时(即表格行只有一行时),才可插入多值字段(array类型)。

{
"表格": [
{
"表格·单行文字": null,
"表格·数字": null
}
]
}
多项选择
【图片选择】、【附件上传】、【引用】、【成员】、【部门】这些字段同理

{
"多项选择": [
null
]
}
按钮【关闭】时
单值字段(string类型)
这里只以单行文字为例,其他同类型字段同理

{
"单行文字": null
}
单值字段(int类型)
这里只以数字为例,其他同类型字段同理

{
"数字": null
}
多值字段(array类型)
表格
数组元素对象中仅允许插入单值字段。除非【表格】数组元素对象仅且只有一个时(即表格行只有一行时),才可插入多值字段(array类型)。

{
"表格": [
{
"表格·单行文字": null,
"表格·数字": null
}
]
}
多项选择
【图片选择】、【附件上传】、【引用】、【成员】、【部门】这些字段同理

{
"多项选择": [
null
]
}
字段不为空时
按钮【开启】时
单值字段(string类型)
这里只以单行文字为例,其他同类型字段同理

{
"单行文字": "单行文字"
}
单值字段(int类型)
这里只以数字为例,其他同类型字段同理

{
"数字": 1
}
多值字段(array类型)
表格
数组元素对象中仅允许插入单值字段。除非【表格】数组元素对象仅且只有一个时(即表格行只有一行时),才可插入多值字段(array类型)。


{
"表格": [
{
"表格·单行文字": "1",
"表格·数字": 1
},
{
"表格·单行文字": "2",
"表格·数字": 2
}
]
}
多项选择
【图片选择】、【附件上传】、【引用】、【成员】、【部门】这些字段同理

{
"多项选择": [
"未命名1",
"未命名2",
"未命名3"
]
}
按钮【关闭】时
单值字段(string类型)
这里只以单行文字为例,其他同类型字段同理

{
"单行文字": "单行文字"
}
单值字段(int类型)
这里只以数字为例,其他同类型字段同理

{
"数字": 1
}
多值字段(array类型)
表格
数组元素对象中仅允许插入单值字段。除非【表格】数组元素对象仅且只有一个时(即表格行只有一行时),才可插入多值字段(array类型)。


{
"表格": [
{
"表格·单行文字": "单行1",
"表格·数字": 1
},
{
"表格·单行文字": "单行2",
"表格·数字": 2
}
]
}
多项选择
【图片选择】、【附件上传】、【引用】、【成员】、【部门】这些字段同理

{
"多项选择": [
"未命名1",
"未命名2"
]
}
特殊情况处理
情况1:空值字段需要传空字符串
当业务接口,无法接收字段为空值时传入的是null,而是需要传空字符串,即""。
处理方式:
1、可以修改业务接口代码,或者封装中间件处理请求参数,将null替换成空字符串。
2、表单代码块处理之后再传入body中
这里说明代码块处理方式:
注释:变量 ob该对象体替换为json body所需要输入的内容。插入字段无需再加上引号。
/**
* 替换对象中的 null 值和恒等于 "null" 的字符串为 ""
* @param {Object} obj - 需要处理的对象
* @returns {Object} - 处理后的对象
*/
function replaceNullValues(obj) {
try {
if (Array.isArray(obj)) {
return obj.map(item => replaceNullValues(item)); // 处理数组每一项
} else if (obj && typeof obj === 'object') {
return Object.fromEntries(
Object.entries(obj).map(([key, value]) => [key, replaceNullValues(value)])
);
} else if (obj === null) {
return ''; // 替换 null 为 ""
} else if (typeof obj === 'string' && obj === 'null') {
return ''; // 替换字符串 "null" 为 ""
}
return obj; // 其他类型直接返回
} catch (error) {
return { error: '处理数据时发生错误' };
}
}
// 主函数调用
function main(ob) {
try {
const result = replaceNullValues(ob);
qf_output = { data: result };
} catch (error) {
qf_output = { error: '执行主函数时发生错误' };
}
}
// 定义待处理对象变量 ob
var ob = {
"t": qf_field.{单行文字$$3185C9CAC$$},
"field1": null,
"field2": "包含null的字符串null值",
"field3": {
"subField": null,
"subField2": "null"
},
"field4": [null, "null", "列表中的null", { "key": "null" }]
};
// 调用主函数并传递 ob 对象
main(ob);
- 测试结果

- 配置解析
将处理后的内容全部返回,并用多行文字接收。

- json body中直接插入多行文字

情况2:数组需要传多值字段
body中输入数组参数中,里面就需要插入多值字段,并且不止一行时,如何办?
处理方式:因为body中插入表格数组时,元素对象中仅允许插入单值字段,所以需要想办法将多值字段转成单值字段。
需要加一个辅助字段,使用公式转为字符串。
注意:
如果是附件上传字段,无法使用公式获取多个文件链接的。只能获取单个文件URL。
如果是部门字段,只能获取对应部门的ID,无法获取到名称。
如果是遇到上述两种情况,需要使用代码块进行处理。

同理成员字段



{
"表格": [
{
"表格·单行文字": "1",
"表格·数字": 1,
"表格·多项选择": "未命名1,未命名2,未命名3",
"表格·成员": "130000030146@126.com,zhangziqi@exiao.tech"
},
{
"表格·单行文字": "2",
"表格·数字": 2,
"表格·多项选择": "未命名2,未命名3",
"表格·成员": "130000030146@126.com,zhangziqi@exiao.tech"
}
]
}