Javascript 将React状态对象转换为正确的JSON模式
我正在使用React开发一个漂亮的todo应用程序,刚开始使用一个工作示例,我正在设置示例数据状态,如下所示:Javascript 将React状态对象转换为正确的JSON模式,javascript,json,reactjs,Javascript,Json,Reactjs,我正在使用React开发一个漂亮的todo应用程序,刚开始使用一个工作示例,我正在设置示例数据状态,如下所示: this.state = { Task: [{ name: "Art", items: [{ item: 'Work on glazing technique', isDone: false, dateCompleted: "" }, { item
this.state = {
Task: [{
name: "Art",
items: [{
item: 'Work on glazing technique',
isDone: false,
dateCompleted: ""
},
{
item: 'Prank call Dali and hang up',
isDone: true,
dateCompleted: "07/15/2018"
},
{
item: 'Prepare new Masonite panels',
isDone: true,
dateCompleted: "07/15/2018"
},
{
item: 'Purchase sable brush',
isDone: true,
dateCompleted: "07/15/2018"
}
]
},
{
name: "Music",
items: [{
item: 'Work on Symphony',
isDone: false,
dateCompleted: ""
},
{
item: 'Finish Berklee class',
isDone: true,
dateCompleted: "07/12/2018"
},
{
item: 'Practice guitar',
isDone: true,
dateCompleted: "07/10/2018"
},
{
item: 'Build new studio',
isDone: true,
dateCompleted: "07/10/2108"
}
]
},
{
name: "Writing",
items: [{
item: 'Finish novel structure',
isDone: false,
dateCompleted: ""
},
{
item: 'Work on middle part',
isDone: true,
dateCompleted: "07/08/2018"
},
{
item: 'Puchase some index cards',
isDone: true,
dataCompleted: "07/08/2018"
}
]
}
],
filter: [{
keyword: '',
Status: "SHOW_ALL"
}],
selectedProject: "0"
};
所以,现在我要设置axios并通过JSON读取数据,而不是显式设置。当然,下一步将设置express并将JSON读/写到数据库
但在将任务对象转换为JSON时,我做得并不好。这就是我到目前为止所做的:
{
"name": "Art",
"items": [{
"item": "Work on glazing technique",
"isDone": "false"
},
{
"item": "Prank call Dali and hang up",
"isDone": "true"
},
{
"item": "Prepare new Masonite panels",
"isDone": "true"
},
{
"item": "Purchase sable brush",
"isDone": "true"
}
]
}, {
"name": "Music",
"items": [{
"item": "Work on Symphony",
"isDone": "false"
},
{
"item": "Finish Berklee class",
"isDone": "true"
},
{
"item": "Practice guitar",
"isDone": "true"
},
{
"item": "Build new studio",
"isDone": "true"
}
]
}, {
"name": "Writing",
"items": [{
"item": "Finish novel structure",
"isDone": "false"
},
{
"item": "Work on middle part",
"isDone": "true"
},
{
"item": "Puchase some index cards",
"isDone": "true"
},
{
"item": "Install Scrivener",
"isDone": "true"
}
]
}, {
"filter": [{
"keyword": "",
"Status": "SHOW_ALL"
}],
"selectedCatelog": 0
}
在关闭}的第一个实例中,{
在导入时抛出一个错误,说明:
syntax error, encountered comma
奇怪的是,JSON验证器说我的JSON是有效的。我没有正确构造JSON
基本上我认为我这里有一个集合。一个包含多个键值对的项的字典,第二个“项”是一个项数组
我确信正确地构造它是非常简单的,但是有人能给我一个提示吗?谢谢!这些都是独立的对象,你根本不会把整个东西包装成一个json对象。它只是一堆用逗号分隔的对象
//you never wrap the json with an opener
{//start
"name": "Art",
"items": [{
"item": "Work on glazing technique",
"isDone": "false"
},
{
"item": "Prank call Dali and hang up",
"isDone": "true"
},
{
"item": "Prepare new Masonite panels",
"isDone": "true"
},
{
"item": "Purchase sable brush",
"isDone": "true"
}]
} //end of object
,//then a comma
{ //start of an object
"name": "Music",
"items": [{
"item": "Work on Symphony",
"isDone": "false"
},
{
"item": "Finish Berklee class",
"isDone": "true"
},
{
"item": "Practice guitar",
"isDone": "true"
},
{
"item": "Build new studio",
"isDone": "true"
}]
}//end
,//then comma
{//etc....
"name": "Writing",
"items": [{
"item": "Finish novel structure",
"isDone": "false"
},
{
"item": "Work on middle part",
"isDone": "true"
},
{
"item": "Puchase some index cards",
"isDone": "true"
},
{
"item": "Install Scrivener",
"isDone": "true"
}]
},{
"filter":[
{
"keyword": "",
"Status": "SHOW_ALL"
}],
"selectedCatelog": 0
}
//close json here
您发布的json无效(您可以检查它),似乎您想要呈现一个对象列表 因此,您需要使用数组来包装整个内容:
[
{
"name": "Art",
"items": [
{
"item": "Work on glazing technique",
"isDone": "false"
},
{
"item": "Prank call Dali and hang up",
"isDone": "true"
},
{
"item": "Prepare new Masonite panels",
"isDone": "true"
},
{
"item": "Purchase sable brush",
"isDone": "true"
}
]
},
{
"name": "Music",
"items": [
{
"item": "Work on Symphony",
"isDone": "false"
},
{
"item": "Finish Berklee class",
"isDone": "true"
},
{
"item": "Practice guitar",
"isDone": "true"
},
{
"item": "Build new studio",
"isDone": "true"
}
]
},
{
"name": "Writing",
"items": [
{
"item": "Finish novel structure",
"isDone": "false"
},
{
"item": "Work on middle part",
"isDone": "true"
},
{
"item": "Puchase some index cards",
"isDone": "true"
},
{
"item": "Install Scrivener",
"isDone": "true"
}
]
},
{
"filter": [
{
"keyword": "",
"Status": "SHOW_ALL"
}
],
"selectedCatelog": 0
}
]
你不需要json对象以数组开头吗?我在redux中传递的大部分数据都是数组。你的对象看起来是一个对象,而Task似乎接受数组。实际上,你发布的json也无效。@Sagivb.g我知道,我告诉他他的错误在哪里,因为我写不出那么长的注释。好的,我只是想是的,JSON Linter背叛了我。它是无效的。我知道我做错了什么。这只是我实现的一堆不同的对象。