将空数组赋值给JSON对象而不是null

3

我目前正在将基于Python的GUI适配为基于JavaScript的Web GUI。程序向某些服务器发送大型JSON消息以进行处理。服务器接收到以下设置了一些值的消息:

"someVar": []

然而,我不知道如何在自己的javascript GUI中以同样的方式发送它。我的解决方案导致以下结果:

"someVar": null

服务器不接受这样的操作,但我无法找到一种方法来分配一个空数组,以免其默认为空。

该对象最初如下:

{
  var1: null
  var2: "someString"
  var3: 1.3
  ...
}

当服务器收到这个时,通常会打印出。
{
  var1: []
  var2: "someString"
  var3: 1.3
  ...
}

假设这个对象存储在一个名为curConfig的变量中。

我想要像这样做:

curConfig['var1'] = []

但是当它发送到服务器时,仍然会留下一个 null 值而不是 []。

为什么你不能只使用[]作为数组的初始值,然后将新元素推送到其中? - Barmar
发布你的代码,这样我们就可以看到你如何初始化对象,并解释如何修复它。 - Barmar
为什么服务器会打印两次对象?听起来像是服务器因某种原因将空数组替换为null - Barmar
3个回答

3

如果你有大量的null值,想在使用JSON#stringify时将其更改为空数组,你可以使用替换函数(第二个参数):

JSON.stringify(value[, replacer[, space]])

该函数接收键和值,您可以决定要返回哪个值。

var data = {
  var1: null,
  var2: "someString",
  var3: 1.3
};

var reslut = JSON.stringify(data, function(key, value) {
  if (value === null) {
    return [];
  }
  return value;
});

console.log(reslut);


1
要在JavaScript中初始化一个空数组,只需像这样编写它:
var arr = [];

JSON的示例

var obj = {
  arr: []
};
JSON.stringify(obj); // "{ "arr": [] }"

1

像这样初始化对象:

{
  var1: [],
  var2: "someString",
  var3: 1.3,
  ...
}

此外,
curConfig.var1 = [];

应该可以工作,我不知道为什么对你不起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接