我有一个对象,该对象的系数属性埋在外部对象的六层深处。
我需要将整个对象传递到后端的PHP文件中,以便对其进行处理以输入到MySQL数据库中。
我似乎无法通过使用深度克隆(使用LoDash)或传播运算符{...}
或JSON.parse(JSON.stringify(obj));
来获取整个对象。
在每种情况下,我最终只会得到空白的方括号集,这些都是我感兴趣的数据所在的地方。
我最终得到的是这个(有关系数,请参阅最后一个空白条目):
{
"dostuff": "saveCalibrationStart",
"debug": true,
"configurationID": 0,
"computername": "REDACTED",
"username": "REDACTED",
"notes": "none",
"softwarename": "CalRun",
"softwareversion": "V12.0.0 beta > 1.13",
"systemid": "42",
"devices": [
{
"modelNumberID": "12",
"serialNumber": "09998",
"position": 1
}
],
"references": [
{
"modelNumberID": "12",
"calibrationDeviceTypeID": 11,
"serialNumber": "09999",
"measurands": [
{
"measurementTypeID": "13",
"measurand": "Phenanthrene",
"calibrationDate": "2019-01-01",
"coefficients": []
}
]
}
]
}
此人在传播算子上的页面似乎很有希望,但我得到的是同一件事:https://flaviocopes.com/javascript-spread-operator/
进一步的实验表明,无论我做什么,当系数看起来像这样时,最终都会得到空数组的系数:
如果将对象另存为全局变量(Chrome),则可以像这样访问,更改和操作系数的元素:
temp1.references[0].measurands[0].coefficients
这似乎是一个简单的任务,抓取对象,将其转换为JSON并将其交给后端进行处理,但这已经困扰了我几天。
答案 0 :(得分:1)
如果我采用您的代码段并将系数设置为等于[1,2,3,4]
,它将起作用:
const temp1= {"dostuff":"saveCalibrationStart","debug":true,"configurationID":0,"computername":"REDACTED","username":"REDACTED","notes":"none","softwarename":"CalRun","softwareversion":"V12.0.0 beta 1.13","systemid":"42","devices":[{"modelNumberID":"12","serialNumber":"09998","position":1}],"references":[{"modelNumberID":"12","calibrationDeviceTypeID":11,"serialNumber":"09999","measurands":[{"measurementTypeID":"13","measurand":"Phenanthrene","calibrationDate":"2019-01-01","coefficients":[1,2,3,4]}]}]};
console.log(temp1.references[0].measurands[0].coefficients);
但是您发布的内容的系数数组为空。我认为您可能对数据是什么和/或何时填充数据感到困惑
答案 1 :(得分:1)
根据OP的要求,我将尝试提供我的建议作为答案。
您似乎将系数声明为数组,但是无论何时出现填充系数,您都将其视为对象。
如果您使用.push,则可能会执行以下操作:
coefficients.push(
drift: value,
offset: value,
etc etc
)
我相信,您需要在填充它的地方做的就是将.push数据包装到一个实际的对象中。
coefficients.push({
drift: value,
offset: value,
etc etc
})
我希望这会有所帮助,很难在不看到系数填充位置的情况下为您提供确切的解决方案。