我有一个带有Java对象的数组。我想将此数组保存到.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文件,其中包含一个带有如下对象的数组:

something.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这个词?

最佳答案

您必须先对jsonArray进行字符串化处理,然后再将其发送回客户端。

关于javascript - JSON.stringify =非法访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15833784/

10-12 06:46