![](/img/trans.png)
[英]json data error Uncaught TypeError: Cannot convert undefined or null to object
[英]TypeError- Cannot convert undefined or null to object. Trying to convert state object values to json array string
尝试将输入表单数据拟合到 JSON 数组字符串时,出现错误
无法将未定义或 null 转换为 object。
下面是我尝试在 state 数据上使用的代码:
const test = this.state.values;
Object.keys(test).forEach(key=>test[key]=[test[key]]);
当我执行console.log(test)
时,数据如下:
Object
input1: {i: "ytuy"}
input2: {x: "tyutyu"}
我的最终目标是将 JSON output 设为:
{
"input1":[{"i":"ytuy"}],
"input2":[{"x":"tyutyu"}]
}
谁能建议我为什么会收到此错误?
看起来您要做的是将每个属性值放入一个单条目数组中。 您可以通过将 object 与Object.fromEntries
和Object.entries
映射来做到这一点。
正如评论中提到的,不要改变当前的 object 至关重要,因为这会改变组件的 state。
const test = { input1: {i: "ytuy"}, input2: {x: "tyutyu"} } const mapped = Object.fromEntries( Object.entries(test).map( ([key, value]) => [key, [value]] ) ); console.log(JSON.stringify(mapped));
那将打印出来
{"input1":[{"i":"ytuy"}],"input2":[{"x":"tyutyu"}]}
您遇到的特定错误可能this.state.values
有时是null
或undefined
的,它并不总是object
。 因此,在尝试 map 之前,您需要确保 object 存在。
由于在反应 js 中不允许对 state object 进行变异,因此这是我的问题的修复。
let obj = Object.assign({}, test ); // creates a brand new object
Object.keys(obj).forEach(key=>obj[key]=[obj[key]]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.