Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stringify()只允许一个值参数。如何在一个大括号下添加更多要字符串化的参数?_Javascript_Json_Node.js - Fatal编程技术网

Javascript stringify()只允许一个值参数。如何在一个大括号下添加更多要字符串化的参数?

Javascript stringify()只允许一个值参数。如何在一个大括号下添加更多要字符串化的参数?,javascript,json,node.js,Javascript,Json,Node.js,关于JSON.stringify()函数,我有一个问题 JSON.stringify({ heads: res.headers, … }, …) 我了解到,简单地使用res.headers实际上并不能输出为JSON格式 目前,我只能在JSON.stringify()中使用一个res.xxxxx方法。有问题的代码粘贴在上面。我如何能够使用多个值?目前,我只能将res.headers放入value参数中。我还想使用res.statusCode和我自己的对象,它们都在一个大括号{}下

关于
JSON.stringify()
函数,我有一个问题

JSON.stringify({
    heads: res.headers,
    …
}, …)
我了解到,简单地使用
res.headers
实际上并不能输出为JSON格式

目前,我只能在JSON.stringify()中使用一个res.xxxxx方法。有问题的代码粘贴在上面。我如何能够使用多个值?目前,我只能将
res.headers
放入
value
参数中。我还想使用
res.statusCode
和我自己的对象,它们都在一个大括号{}下字符串化


JSON.Stringify的参数如下:
JSON.Stringify(value、[replace]、[space])

您可以随时向headers对象添加您想要的额外内容

http.get(options, function(res){
            fs.appendFile('log.txt', JSON.stringify(res.headers, null, 4));
})

我不知道如果你改变节点中的
res
对象,是否会有任何不良副作用。如果您担心的话,您可能需要考虑创建头对象的浅拷贝。

您需要创建一个新的JS对象并将RES.Head放入其中。
res.headers.statusCode = res.statusCode
JSON.stringify(res.headers, null, 4);

JSON总是一个值。因此输出的
JSON.stringify
始终只能是一个值。将输入设置为单个值也是有意义的。这就像是问为什么我的函数不能返回两个东西?您可以让它返回一些复合值,但这意味着您仍然返回单个(复合)值。这里的解决方案是相同的,编写您的输入

var obj = {};
obj.headers = res.headers;
obj.somethingelse = somethingelse;
var string = JSON.stringify(obj);

请注意,您必须自己编写
parse_http_headers

您还可以对对象的
部分以外的部分进行字符串化:

var reply = {
    code: res.statusCode,
    headers: parse_http_headers(res.headers),
    etc: /* etc */
};
log(JSON.stringify(reply));
如果只想对对象的某些部分进行字符串化,可以

  • 使用
    replacer
    功能过滤它们
  • 删除
    之前的所有内容
  • 或构建要字符串化的新对象:

    JSON.stringify(res, …)
    

如果要展平多个对象,可以使用此功能

JSON.stringify({
    heads: res.headers,
    …
}, …)
函数合并(){
var out={};
插入=函数(e){
用于(e中的变量i){
if(Object.prototype.hasOwnProperty.call(e,i))
out[i]=e[i];
}
};
for(var i=0;i
res.headers的内容是什么?
你说的“在一个大括号下所有字符串化”是什么意思?@FritsvanCampen是的,我知道。使用
res.headers
本身不会输出到JSON。使用JSON.stringify()就可以了。我的难题是JSON.stringify()只允许一个参数。我想知道是否有解决这个问题的办法@T.J.Crowder它们只是HTTP响应头,带有“日期”、“服务器”、“x-powered-by”、“x-aspnet-version”位置等
JSON.stringify(值、[replace]、[space])hasOwnProperty
有一些已知的陷阱。尝试展平此对象:
{hasOwnProperty:function(){return false;},foo:“bar”}
。解决方案是使用
Object.prototype.hasOwnProperty.call(..)