相关疑难解决方法(0)

将对象转换为字符串

如何将JavaScript对象转换为字符串?

例:

var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)
Run Code Online (Sandbox Code Playgroud)

输出:

对象{a = 1,b = 2} //非常好的可读输出:)
项目:[object Object] //不知道里面是什么:(

javascript string object tostring

926
推荐指数
21
解决办法
150万
查看次数

如何使用node.js打印JSON?

这似乎是一个已解决的问题,但我无法找到解决方案.

基本上,我读取了一个JSON文件,更改了一个密钥,并将新的JSON写回到同一个文件中.一切正常,但我放松了JSON格式.所以,而不是:

{
  name:'test',
  version:'1.0'
}
Run Code Online (Sandbox Code Playgroud)

我明白了

{name:'test',version:'1.1'}
Run Code Online (Sandbox Code Playgroud)

在Node.js中有没有办法将格式良好的JSON写入文件?

json node.js

403
推荐指数
7
解决办法
25万
查看次数

console.dir和console.log有什么区别?

在Chrome中,console对象定义了两种似乎做同样事情的方法:

console.log(...)
console.dir(...)
Run Code Online (Sandbox Code Playgroud)

我在网上读到dir了一个在记录它之前获取对象副本的地方,而log只是将引用传递给控制台,这意味着当你去检查你记录的对象时,它可能已经改变了.然而,一些初步测试表明没有区别,并且它们都可能在不同的状态下显示对象,而不是记录它们.

在Chrome控制台(Ctrl+ Shift+ J)中试试这个,看看我的意思:

> o = { foo: 1 }
> console.log(o)
> o.foo = 2
Run Code Online (Sandbox Code Playgroud)

现在,展开[Object]日志语句下方并注意它显示foo的值为2.如果您使用dir而不是重复实验,则同样如此log.

我的问题是,为什么这两个看似相同的函数存在console

javascript console google-chrome

346
推荐指数
3
解决办法
10万
查看次数

是否无法使用JSON.stringify对错误进行字符串化?

再现问题

尝试使用Web套接字传递错误消息时遇到问题.我可以复制我面临的问题,JSON.stringify以迎合更广泛的受众:

// node v0.10.15
> var error = new Error('simple error message');
    undefined

> error
    [Error: simple error message]

> Object.getOwnPropertyNames(error);
    [ 'stack', 'arguments', 'type', 'message' ]

> JSON.stringify(error);
    '{}'
Run Code Online (Sandbox Code Playgroud)

问题是我最终得到一个空对象.

我试过的

浏览器

我首先尝试离开node.js并在各种浏览器中运行它.Chrome版本28给了我相同的结果,有趣的是,Firefox至少做了一次尝试,但遗漏了消息:

>>> JSON.stringify(error); // Firebug, Firefox 23
{"fileName":"debug eval code","lineNumber":1,"stack":"@debug eval code:1\n"}
Run Code Online (Sandbox Code Playgroud)

替换功能

然后我查看了Error.prototype.它表明原型包含诸如toStringtoSource之类的方法.知道函数不能被字符串化,我在调用JSON.stringify时包含了一个replacer函数来删除所有函数,但后来意识到它也有一些奇怪的行为:

var error = new Error('simple error message');
JSON.stringify(error, function(key, value) {
    console.log(key === ''); // true (?)
    console.log(value === error); // true …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling json node.js

289
推荐指数
12
解决办法
8万
查看次数

节点console.log默认截断输出.如何查看完整输出?

Node的console.log似乎默认截断输出,例如,查看API的输出:

{ '@': { xmlns: 'http://ec2.amazonaws.com/doc/2012-03-01/' },
   requestId: '123456',
   reservationSet: 
   { item: 
      { reservationId: 'r-123456',
       ownerId: '123456',
       groupSet: [Object],
       instancesSet: [Object],
       requesterId: '123456' } } }
Run Code Online (Sandbox Code Playgroud)

如您所见,[object]未扩展.我想这是一个方便的措施 - 很多人不希望节点默认喷出数千行.有没有办法告诉它扩展记录项目的内容?

javascript logging node.js

33
推荐指数
1
解决办法
9546
查看次数

如何在console.log中打印json数据

我无法从javascript访问json数据.请帮我如何从javascript中的json数据访问数据.

我有像json这样的数据

{"success":true,"input_data":{"quantity-row_122":"1","price-row_122":" 35.1 "}}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过console.log(数据)但是记录了打印对象对象

success:function(data){
     console.log(data);
}
Run Code Online (Sandbox Code Playgroud)

如何打印console.log特定数据?我需要打印数量-row_122 = 1 price-row_122 = 35.1

javascript arrays json

28
推荐指数
6
解决办法
13万
查看次数

node console.log/util.inspect用于嵌套的Object/Array

对于嵌套的Object或Array

var obj = {
  foo:
  {
    foo:
    {
      foo:
      {
        foo:
        {
          foo:
          {
            foo: 'foo'
          }
        }
      }
    }
  }
};
console.log(obj);
util.debug(obj);
util.debug(util.inspect(obj));
Run Code Online (Sandbox Code Playgroud)

console.logutil.debug+util.inspect

{ foo: { foo: { foo: [Object] } } }
DEBUG: [object Object]
DEBUG: { foo: { foo: { foo: [Object] } } }
Run Code Online (Sandbox Code Playgroud)

在一定程度上,它[Object]没有进一步细节.

这总是令人烦恼,因为我无法调查实际值.

为什么node(或V8)实现这样?有没有解决方法?

谢谢.


编辑:我收到了一个建议

console.log(JSON.stringify(obj));

结果

{"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}

它有点工作,但显然整个都是stringifyed,并且我可能无法在调试时为所有对象输出执行此操作.不是通用的方法.


EDIT2:

解:

console.log(util.inspect(obj,{ depth: null }));

输出:

{ foo: …

javascript node.js

11
推荐指数
1
解决办法
5699
查看次数

节点使用xml2js解析xml

我试图使用xml2js解析和查询xml中的元素.我的xml字符串如下:

var xml = "<config><test>Hello</test><data>SomeData</data></config>";
Run Code Online (Sandbox Code Playgroud)

我想要的是提取值并将其分配给 var extractedData

这是我到目前为止所拥有的:

var parser = new xml2js.Parser();
parser.parseString(xml, function(err,result){
  //Extract the value from the data element
  extractedData = result['data'];
}
Run Code Online (Sandbox Code Playgroud)

这不起作用.有人可以指出我是如何从我的xml中获取值的吗?

谢谢

这似乎不起作用.有人能告诉我这里可能存在什么问题吗?

javascript xml node.js xml-parsing

10
推荐指数
1
解决办法
4万
查看次数

如何console.log大对象?

我正试图看看对象包含的内容

随着console.log(obj)控制台从线切断,我不能看到整个结构.

然后我尝试将其写入文件

fs.writeFile('test', JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)

但我得到一些关于循环引用的错误.

有没有其他方法来查看对象大声笑?该对象是来自nodejs websocket模块的"连接".文档非常差,我似乎无法找到保存IP地址的属性:(

javascript object node.js console.log

5
推荐指数
2
解决办法
8392
查看次数

什么决定节点是否打印“[object Object]”或完整对象?

小提示我非常熟悉console.log()JSON.stringify()、等Object.prototype.toString()-util.inspect()这个问题不是问如何显示对象的内容,而是问为什么节点的行为在不同情况下会发生变化。

我知道我可以console.log(someObject)并且节点将打印:

[object Object]
Run Code Online (Sandbox Code Playgroud)

Node js 函数返回 [object Object] 而不是字符串值对此有一些很好的信息。

我知道那[object Object]是来自Object.prototype.toString()

我知道我可以console.log(JSON.stringify(someObject, null, 2)并且节点将打印:

{
  foo: 'bar'
}
Run Code Online (Sandbox Code Playgroud)

或使用util.inspect()等。请参阅此答案

然而,有时节点似乎会实际打印对象内容

如果我创建一个名为runme.js以下内​​容的新文件:

console.log({foo: 'bar'})

并且运行node runme.js节点将打印

{ foo: 'bar' }

不是[object Object]

为什么节点打印[object Object]

编辑:根据基思的问题,[object Object]当我运行时会出现:

console.log(`Check me out ${{foo: 'bar'}}`)
Run Code Online (Sandbox Code Playgroud)

日志[object Object]

是什么决定了节点是否使用Object.prototype.toString() …

javascript node.js

5
推荐指数
1
解决办法
1545
查看次数