如何使用javascript在json中获取“__type”键的值

时间:2016-05-11 03:56:34

标签: javascript json

解决方案:

我找到了问题,那就是手写笔解析器重写函数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中运行此代码

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

JavaScript不会以任何方式特别识别

“_ _ 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']