解决方案:
我找到了问题,那就是手写笔解析器重写函数toJSON,所以尽管ast打印如下,但实际上ast对象没有__type属性,所以它会导致问题。问题:
我正在使用手写笔树,如:
object.__type
这是一张由json表达的树。
我希望获得“__type”的值,但是使用[“__type”]来获取值,将返回undefined。
似乎“__type”在json中有一些特殊含义,我怎样才能得到“__type”的值?
PS:
我尝试typeof ast // returns object
来获取值,但它不起作用。
另外,我发现了一些奇怪的事情
console.log(ast.hasOwnProperty('__type')) //return false
我使用JSON.stringify(ast),而__type在字符串中 但是我使用console.log(ast),缺少__type,我不知道为什么......
我也试过
$ git pull origin branch_name
username@private_repository's password:
From ssh://private_repository/path/project
* tag branch_name -> FETCH_HEAD
error: cannot stat 'path/name/of/file': Permission denied
error: cannot stat 'path/name/of/file': Permission denied
PPS:我在节点v0.12.0中运行此代码
感谢您的帮助!
答案 0 :(得分:0)
“_ _ type”。验证AST是否已解析为对象。如果它仍然是JSON字符串,您将获得undefined
。您可以通过在AST上使用typeof
运算符来绝对确定。它应该返回“object”而不是“string”。如果是“字符串”,则必须使用JSON.parse
。
答案 1 :(得分:0)
你可以试试点符号:
var x = {"__type": "Ident"};
console.log(x['__type']); // with 'string'
console.log(x.__type); // with 'dot'
答案 2 :(得分:0)
" __ type"没有什么特别之处。在JS中。我会挑衅地测试typeof以确保你正在处理一个对象。您的JSON对象是否有名称?您也可以尝试这个来测试第一个对象。
GOOGLE_SIGN_IN_API
或者如果你要进入对象:
nameOfYourObject['__type']
// if there are more than one
nameOfYourObject[0]['__type']