![](/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.