我正在努力创建一个 JSON 对象以通过网络发送。有问题的数组在 Chrome 调试器中看起来像这样。
event: Array[0]
$$hashKey: "02Q"
bolFromDB: 1
bolIndoor: null
classId: 41
curValue: "7.1000"
curWeightHeight: ""
datDate: "2013-01-13T01:00:00.000Z"
exists: true
id: "10"
idClass: "W"
idEvent: "60M"
length: 0
ownEvents: true
ownSex: true
pbs: undefined
selected: true
strAdditional: ""
strName: "60m"
strTown: "Stadtallendorf"
__proto__: Array[0]
Run Code Online (Sandbox Code Playgroud)
这是一个更大的对象数组的一小部分,但在尝试将问题分解为最小的部分时,这似乎是该行的结尾。
调用时JSON.stringify(event),返回值为[]。
我期望{$$hashKey: "02Q",bolFromDB: 1, bolIndoor: null, ... etc }
看起来您的event对象已初始化为数组,然后分配了字母数字键控属性。JavaScript 数组将接受非数字键,但 JSON 解析器将忽略这些键,因为 JSON 必须对数组使用方括号表示法,因此数字键是隐式的 \xe2\x80\x94 它不可能表达命名属性使用方括号表示法。
Zach L编写了几个测试来验证这个断言:
\n\nvar test = [];\ntest.prop = \'foo\';\nconsole.log(test); // [prop: "foo"] \ntest // []\nJSON.stringify(test) // "[]"\nRun Code Online (Sandbox Code Playgroud)\n\n这是显示空数组的 JSON。然而,当我们从一个对象开始时:
\n\nvar test = {};\ntest.prop = \'foo\';\nconsole.log(test); // Object {prop: "foo"}\ntest // Object {prop: "foo"}\nJSON.stringify(test) // "{"prop":"foo"}"\nRun Code Online (Sandbox Code Playgroud)\n\n从你所说的来看,它似乎从来没有打算成为event一个数组,所以我建议你确保在将所有这些属性分配给它之前将其实例化为一个对象:
var event = {};\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2024 次 |
| 最近记录: |