下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。

console.log(config);
console.log(config.col_id_3);

这就是这些行在控制台中打印的内容


当前回答

没有一个JSON stringify/parse对我有用。

formValues.myKey:               undefined
formValues.myKey with timeout:  content

我想要formValues的值。myKey是什么技巧是setTimeout 0,就像下面的例子。希望能有所帮助。

console.log('formValues.myKey: ',formValues.myKey);
setTimeout( () => { 
  console.log('formValues.myKey with timeout: ', formValues.myKey);
}, 0 );

其他回答

我也有同样的问题。我的解决方案是使用字符串化输出作为解析JSON的输入。这对我很管用。希望对你有用

var x =JSON.parse(JSON.stringify(obj));
console.log(x.property_actually_now_defined);

我遇到过这样的问题,发现解决方案与Underscore.js有关。我最初的日志记录毫无意义:

console.log(JSON.stringify(obj, null, 2));

> {
>   "code": "foo"
> }

console.log(obj.code);

> undefined

我还通过查看对象的键找到了解决方案:

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

> ["_wrapped","_chain"]

这让我意识到obj实际上是一个围绕对象的Underscore.js包装器,最初的调试对我撒谎了。

这可能会帮助某人,因为我有一个类似的问题,其中JSON.parse()返回一个对象,我可以在console.log()上打印,但我无法访问特定的字段,上述解决方案都不适合我。比如使用JSON.parse()和JSON.stringify()的组合。

var jsonObj = JSON.parse(JSON.stringify(responseText))

// where responseText is a JSON String returned by the server.

console.log(jsonObj) ///Was printing the object correctly
console.log(jsonObj.Body) /// Was printing Undefined  

我最终通过使用ExtJs Ext.decode()提供的不同解析器来解决这个问题;

var jsonObj = Ext.decode(responseText)
console.log(jsonObj.Body) //Worked...

console.log(anObject)的输出是误导性的;通过单击>展开控制台中显示的对象树,显示的对象的状态才会解析。当你console.log对象时,它不是对象的状态。

相反,尝试console.log(object .keys(config)),甚至console.log(JSON.stringify(config)),您将看到调用console.log时的键或对象的状态。

您将(通常)发现在console.log调用之后添加了键。

我也遇到了这个问题,长话短说,我的API返回的是字符串类型,而不是JSON。所以当你把它打印到日志中时,它看起来完全一样,但是每当我试图访问属性时,它给了我一个未定义的错误。

火守则:

     var response = JsonConvert.DeserializeObject<StatusResult>(string Of object);
     return Json(response);

之前我刚回来

return Json(string Of object);