我有一个包含 Javascript 对象的数组。我想将此数组保存到.json
文件中。
在我将对象添加到文件之前,我console.log
将对象。
// Client
Object {id: "1", color: "#00FF00"}
Object {id: "2", color: "#FF7645"}
Object {id: "3", color: "#FF8845"}
然后我将 jsonArray 发布到我的 nodejs 服务器,如下所示:
// Client
$.post('/savejson', 'json=' + JSON.stringify(jsonArray)) // This works
抓住帖子并将文件保存在 nodejs 中,如下所示:
app.router.post('/savejson', function(data) {
url = '/jsonfiles/something.json'
// Nodejs Server
fs.writeFile(url, data.body.json, function(error) {
if(error) {
console.log(error)
return
}
console.log('Saved file: ' + url)
})
现在我有一个 json 文件,其中包含一个包含如下对象的数组:
东西.json
[
{"id":"1","color":"#00FF00"},
{"id":"2","color":"#FF7645"},
{"id":"3","color":"#FF8845"}
]
我读了这样的文件:
// Nodejs Server
jsonfile = fs.readFileSync(url, 'UTF-8')
// Output jsonfile:
[{"id":"1","color":"#00FF00"},{"id":"2","color":"#FF7645"},{"id":"3","#FF8845"}]
解析它
// Nodejs Server
jsonArray = JSON.parse(jsonfile)
// Output jsonArray:
[{id: '1',color: '#00FF00'},{ id: '2',color: '#FF7645'},{ id: '3',color: '#FF8845'}]
并发送回客户端
// Nodejs Server
window.newjson(jsonArray)
在我的客户处,我通过以下方式捕获文件:
// Client
window.newjson = function(jsonArray) {
// Here foreach loop
}
// Output jsonArray:
undefined[3]
0:
color: "#00FF00"
id: "1"
__proto__:
1:
color: "#FF7645"
id: "2"
__proto__:
2:
color: "#FF8845"
id: "3"
__proto__:
length: 3
__proto__: undefined[0]
对于每个对象,我console.log
都是对象。
输出
// Client
{id: "1", color: "#00FF00"}
{id: "2", color: "#FF7645"}
{id: "3", color: "#FF8845"}
注意到对象词是不同的。
现在我想像这样再次保存相同的文件:
// Client
$.post('/savejson', 'json=' + JSON.stringify(jsonArray)) // Not working anymore...
当我JSON.stringify(jsonArray)
在客户端使用时,我收到错误:Uncaught illegal access
我也尝试JSON.parse(jsonArray)
在客户端使用,但这给了我错误Uncaught SyntaxError: Unexpected token o
当我在第二篇文章之前记录 jsonArray 时:
// 1
console.log(jsonArray)
// Result
Array[3]
0:
color: "#00FF00"
id: "1"
__proto__:
1:
color: "#FF7645"
id: "2"
__proto__:
2:
color: "#FF8845"
id: "3"
__proto__:
length: 3
__proto__: Array[0]
// 2
console.log(jsonArray.toString())
// Result
[object Object],[object Object],[object Object]
// 3
JSON.stringify(jsonArray)
// Result
Uncaught illegal access
// 4
JSON.parse(jsonArray)
// Result
Uncaught SyntaxError: Unexpected token o
我做错了什么?为什么我错过了这个Object
词?