跳到主要内容

JSON body字段插入表现

问题描述

在调用接口的时候,请求体中会存在插入表单中各个字段的情况,但是对于插入之后的表现是如何不清楚。所以该篇文档介绍了字段插入之后的表现。

文档作用

帮助用户很好了解字段插入后呈现的表现形式是如何的

插入字段表现

image.png

插入规则:

当上述按钮【开启】时,单值字段(string类型/int类型)会以字段填入值插入,系统不会自动带上双引号。

当上述按钮【关闭】时,单值字段(string类型)会以字段填入值插入,系统并且会自动带上双引号后插入。int类型字段(数字/电话字段),系统不会自动带上双引号。

无论按钮【开启】/【关闭】时,多值字段(array类型),系统都会自动带上双引号后插入(仅针对一维数组有效,多维只生效最后一层)。

如果页面无该按钮时,一律视为按钮【关闭】处理。

字段类型分类:

单值字段(string类型):【单行文字】、【多行文字】、【链接】、【日期】、【起止时间】、【邮箱】、【单项选择】、【下拉选择】、【地址】、【描述文字】、【富文本】、【定位】、【数据关联】

单值字段(int类型):【数字】、【电话】

多值字段(array类型):【表格】、【多项选择】、【图片选择】、【附件上传】、【引用】、【成员】、【部门】

注意:

1、其中多值字段中,除了表格字段外,其他字段也可作为单值字段(string类型)输出,即只选择一个内容进行输出。

2、body中数组插入【表格】子字段时,只能插入单值字段,无法插入多值字段(array类型),否则json body体会报错。除非【表格】数组元素对象仅且只有一个时,才可插入多值字段(array类型)。

3、body中数组如果是多维数组,系统只会对最后一层数组插入字段自动加上引号并且进行扩充。

image.png

image.png

{
"表格": [
{
"表格列1":单行文字,
"表格列":表格列1 表格列2,
"tb": [
{
"cc": "表格列11"
},
{
"cc": "表格列22"
}
]
}
]
}

字段为空时

当字段为空值时,插入到json body中会以null值传入。

按钮【开启】时

单值字段(string类型)

这里只以单行文字为例,其他同类型字段同理

image.png

{
"单行文字": "null"
}
单值字段(int类型)

这里只以数字为例,其他同类型字段同理

image.png

{
"数字": null
}
多值字段(array类型)
表格

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

image.png

{
"表格": [
{
"表格·单行文字": null,
"表格·数字": null
}
]
}
多项选择

【图片选择】、【附件上传】、【引用】、【成员】、【部门】这些字段同理

image.png

{
"多项选择": [
null
]
}

按钮【关闭】时

单值字段(string类型)

这里只以单行文字为例,其他同类型字段同理

image.png

{
"单行文字": null
}
单值字段(int类型)

这里只以数字为例,其他同类型字段同理

image.png

{
"数字": null
}
多值字段(array类型)
表格

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

image.png

{
"表格": [
{
"表格·单行文字": null,
"表格·数字": null
}
]
}
多项选择

【图片选择】、【附件上传】、【引用】、【成员】、【部门】这些字段同理

image.png

{
"多项选择": [
null
]
}

字段不为空时

按钮【开启】时

单值字段(string类型)

这里只以单行文字为例,其他同类型字段同理

image.png

{
"单行文字": "单行文字"
}
单值字段(int类型)

这里只以数字为例,其他同类型字段同理

image.png

{
"数字": 1
}
多值字段(array类型)
表格

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

image.png

image.png

{
"表格": [
{
"表格·单行文字": "1",
"表格·数字": 1
},
{
"表格·单行文字": "2",
"表格·数字": 2
}
]
}
多项选择

【图片选择】、【附件上传】、【引用】、【成员】、【部门】这些字段同理

image.png

{
"多项选择": [
"未命名1",
"未命名2",
"未命名3"
]
}

按钮【关闭】时

单值字段(string类型)

这里只以单行文字为例,其他同类型字段同理

image.png

{
"单行文字": "单行文字"
}
单值字段(int类型)

这里只以数字为例,其他同类型字段同理

image.png

{
"数字": 1
}
多值字段(array类型)
表格

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

image.png

image.png

{
"表格": [
{
"表格·单行文字": "单行1",
"表格·数字": 1
},
{
"表格·单行文字": "单行2",
"表格·数字": 2
}
]
}
多项选择

【图片选择】、【附件上传】、【引用】、【成员】、【部门】这些字段同理

image.png

{
"多项选择": [
"未命名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);
  • 测试结果

image.png

  • 配置解析

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

image.png

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

image.png

情况2:数组需要传多值字段

body中输入数组参数中,里面就需要插入多值字段,并且不止一行时,如何办?

处理方式:因为body中插入表格数组时,元素对象中仅允许插入单值字段,所以需要想办法将多值字段转成单值字段。

需要加一个辅助字段,使用公式转为字符串。

注意:

如果是附件上传字段,无法使用公式获取多个文件链接的。只能获取单个文件URL。

如果是部门字段,只能获取对应部门的ID,无法获取到名称。

如果是遇到上述两种情况,需要使用代码块进行处理。

image.png

同理成员字段

image.png

image.pngimage.png

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