我有一个大对象,我想转换为JSON并发送.但它具有圆形结构.我想抛出任何存在的循环引用并发送任何可以进行字符串化的内容.我怎么做?
谢谢.
var obj = {
a: "foo",
b: obj
}
Run Code Online (Sandbox Code Playgroud)
我想将obj字符串化为:
{"a":"foo"}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将JSON对象写入JSON文件.代码执行没有错误,但是不是写入对象本身,所有写入JSON文件的是:
[object Object]
Run Code Online (Sandbox Code Playgroud)
这是实际写作的代码:
fs.writeFileSync('../data/phraseFreqs.json', output)
Run Code Online (Sandbox Code Playgroud)
'output'是一个JSON对象,该文件已经存在.如果需要更多信息,请告诉我.
如何使用Node获取一个JS对象(例如var obj = {a: 1, b: 2})并创建一个包含该对象的文件?
例如,以下工作:
var fs = require('fs')
fs.writeFile('./temp.js', 'var obj = {a: 1, b: 2}', function(err) {
if(err) console.log(err)
// creates a file containing: var obj = {a: 1, b: 2}
})
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
var obj = {a: 1, b: 2}
fs.writeFile('./temp.js', obj, function(err) {
if(err) console.log(err)
// creates a file containing: [object Object]
})
Run Code Online (Sandbox Code Playgroud)
更新:JSON.stringify()将创建一个JSON对象(即{"a":1,"b":2}),而不是Javascript对象(即{a:1,b:2})
我在 stackoverflow 和其他教程网站上阅读了许多关于将对象/JSON 写入文件的帖子,但没有一个解决方案适合我。
1)代码:
let messages = await fetchMessages()
console.log(messages) // Prints an object
fs.writeFileSync('./msgdata.json', messages , 'utf-8');
Run Code Online (Sandbox Code Playgroud)
2)也尝试过,
fs.writeFileSync('./msgdata.json', JSON.stringify(messages) , 'utf-8');
Run Code Online (Sandbox Code Playgroud)
3)也尝试过,
fs.writeFile(),但得到与上面相同的输出。
msgdata.json:(对于 1)
[object Map]
Run Code Online (Sandbox Code Playgroud)
msgdata.json:(对于 2 和 3)
{}
Run Code Online (Sandbox Code Playgroud)
有人可以指出是什么原因造成的吗?
OUTPUT contains 10 more such objects having different id's:
channel:
TextChannel {
type: 'text',
id: '424825532274253312',
name: 'request',
position: 69,
parentID: '397363224286473987',
permissionOverwrites: [Object],
topic: null,
nsfw: false,
lastMessageID: '427143105410760704',
guild: [Object],
messages: [Object],
_typing: Map {} },
id: …Run Code Online (Sandbox Code Playgroud) 我的代码是这样的:
fs.writeFile("file.bin", this, 'binary', function(err){
if(err) console.log(err);
else console.log("file saved");
});
Run Code Online (Sandbox Code Playgroud)
这是在具有一堆属性的函数中。如果我这样做console.log(this),它会显示对象,但是当我保存它时,文件只有这个:
[object Object]
Run Code Online (Sandbox Code Playgroud)
由于我没有得到我想要的答案,我想澄清一下我想要的。我希望我的对象被存储为一个对象,而不是一个 json 文件或 txt 文件。例如,如果我有一个 mp3 流,我希望将此流存储为 mp3 文件而不是 json 文件。有人知道怎么做吗?
我有一个对象数组。我需要将它转换为 .jsonl 格式并使用 lambda 函数中的节点将其作为响应发送我一直试图将其更改为字符串并添加 '\n' 以使其成为新行,但它不起作用