描述问题
我们使用open api规范。在我们模型中有一个带有"uniqueItems: true"的数组属性。当我们生成这个模型时,它会创建一个类型为Set的JavaScript对象。当我们想把这个模型发送到api时,Set似乎在转换过程中丢失了。我已经将问题缩小到了toJSONObject方法。我修改了以下单元测试:should convert to a plain object without circular references
(请参阅下面的改进版本代码片段)
结果显示了一个空集合{},我认为这是不正确的。
重现问题
要么用我提供的示例替换单元测试 should convert to a plain object without circular references
并注意到它失败。或者创建一个包含Set的模型,并尝试将其放入后端(或模拟)并注意到Set没有正确发送(它被发送为空,{})。
代码片段
it('should convert to a plain object without circular references', function () {
const obj= {a: [0]}
const source = {x:1, y:2, obj};
source.circular1 = source;
obj.a[1] = obj;
obj.b = new Set(['a', 'b']);
assert.deepStrictEqual(utils.toJSONObject(source), {
x: 1, y:2, obj: {a: [0], b: ['a', 'b']}
});
});
预期行为
我希望能够向后端/api发送/放入一个Set(具有唯一元素的数组)。
Axios版本
1.5.0
适配器版本
json
浏览器
Chrome
浏览器版本
n.a.
Node.js版本
16.14.2
OS
osx 13.5.2
其他库版本
- 无响应*
其他上下文/截图
- 无响应*
5条答案
按热度按时间ycggw6v21#
我想处理这个问题并努力解决它。你能把它交给我吗?
1wnzp6jl2#
我认为这个问题的原因是,默认情况下,当将Set作为参数传递给JSON.stringify和utils.toJSONObject方法时,它们都会返回一个空对象。
通过在Set对象上使用...(扩展运算符)将Set转换为数组,并用方括号将结果包围起来,使其成为一个数组,可以解决这个问题。
pqwbnv8z3#
我想要在这个项目上工作。
drnojrws4#
我可以处理这个问题吗?
ijxebb2r5#
请不要忘记可能存在的嵌套问题。以下是修复后的pull请求:#6111。