Javascript NodeJS-如何将json文件表示为var?
我编辑我的帖子是因为我想澄清帖子的含义, 真正的问题不是关于我编写的代码或等式运算符,而是关于在var中表示json文件。 我将尝试以不同的方式再次询问,我需要在Node js中实现一个函数,该函数获取json字符串作为参数,将此json字符串存储在json文件中,并将此json文件发送给其他函数, 我该怎么做Javascript NodeJS-如何将json文件表示为var?,javascript,node.js,Javascript,Node.js,我编辑我的帖子是因为我想澄清帖子的含义, 真正的问题不是关于我编写的代码或等式运算符,而是关于在var中表示json文件。 我将尝试以不同的方式再次询问,我需要在Node js中实现一个函数,该函数获取json字符串作为参数,将此json字符串存储在json文件中,并将此json文件发送给其他函数, 我该怎么做 其他开发人员要求我向函数发送一个json文件, 还是表示json文件的变量? 我该怎么做? 我可以在节点js中用变量表示文件,还是只保存json obj var ob1 = requi
其他开发人员要求我向函数发送一个json文件, 还是表示json文件的变量? 我该怎么做? 我可以在节点js中用变量表示文件,还是只保存json obj
var ob1 = require('./test.json');
var ob2 = {"a" : "b"};
var b = (ob1 === ob2)
当然,test.json包含与ob2对象中完全相同的json。
当我在intellij中调试这段代码时,ob1和ob2似乎完全相同。
两个对象具有相同的内容
那么为什么“b”值是假的呢
谢谢。两个对象
ob1
和ob2
可能具有相同的内容,但它们仍然是两个不同的对象
obj1===obj2
不比较对象的内容,而是比较它们的引用。这些参考文献不一样,因此比较结果是否定的
您必须自己实现对象内容的比较,例如:
ob1.a === ob2.a
节点中实际上没有“file”对象,但可以将JSON文件的路径作为参数发送。或者,最好将对象本身作为参数发送。您需要非常清楚您的术语和概念
{A:1}
'{“a”:1}'
require('foo.json')
读入并转换为JavaScript对象require('foo.JSON')
读入JSON文件,该文件将读入该文件,同时转换为JavaScript对象,然后您可以传递该对象
如果他们要求你发送“JSON”,很可能他们使用了不正确的术语,实际上是指你发送一个JavaScript对象,在这种情况下,请参见上文。如果他们真的是指“JSON”(表示字符串),那么如果你已经有了JSON字符串,你可以按原样传递它;或者,如果您有一个JavaScript对象,并且需要将其作为JSON传递(例如,将其传递给类似AJAX的接口),那么您可以使用JSON.stringify
将JavaScript对象转换为JSON
在您的特定情况下,您正在读取一个JSON文件并创建一个JavaScript对象obj1
。然后,您将使用文本对象表示法obj2
创建另一个JavaScript对象。如果要比较深度相等,则不能使用=
或===
来比较对象的标识,而且这两个对象具有不同的标识,即使它们具有相同的键/值对,因此您必须使用提供深度相等检查的库,或者编写自己的库
它是关于用var表示json文件的
我不知道你说的在变量中“表示”JSON文件是什么意思。重复一下,您可以使用require('foo.JSON')
读取JSON文件,它将返回一个可以分配给变量的JavaScript对象;或者,您可以使用标准节点文件I/O API以文本形式读入JSON文件,然后自己使用JSON.parse
将其转换为JavaScript对象
我需要在Node js中实现一个函数,该函数获取json字符串作为参数,将该json字符串存储在json文件中,并将该json文件发送给其他函数,我应该如何做到这一点
我猜您的意思是“将JSON字符串作为参数”。“将此json文件发送给其他函数”最有可能的解释实际上是“将相应的JavaScript对象传递给其他函数”。如果那是你想做的,那么
function takeJsonAndSendObject(json) {
otherFunction(JSON.parse(json));
}
如果出于某种原因,您确实希望“将此json字符串存储在json文件中”,即硬盘上的物理文件,那么您必须使用节点的文件I/O API来编写物理文件。然后可以将文件名传递给另一个函数。但是,当您已经拥有JSON和/或JavaScript对象并且可以直接传递它时,为什么要这样做呢?NodeJS中没有
文件对象。如果要将文件传递给另一个函数,请将该文件的路径传递给需要该文件的函数。然后从该函数中,使用fs
模块读取文件内容
低于func
function createJSONFile(jsonObject) {
var jsonPath = './jsonFileName.json';
var fs = require('fs');
fs.writeFileSync(jsonPath, JSON.stringify(jsonObject));
return jsonPath;
}
var object = {name: 'test'};
var filePath = createJSONFile(object);
var json = require(filePath);
object === json // false
//to check the equality of the content, you need to use `JSON.stringify`.
JSON.stringify(object) === JSON.stringify(json) // true