2016-12-02 133 views
0

有人告诉我。如何提取json响应?

obj是一个JSON响应。

obj = { title: 'ABCD', _key: '-KX9Cwwuc2FjxcG-SNY0' } 

我可以使用的console.log(OBJ [“标题”])获得ABCD。

如何复杂的情况?

obj = { '-KXu3irrOjUtcejm4VF3': 
    { gold: 0, 
    title: ‘[email protected]', 
    uketuke: 0, 
    user: ‘[email protected]' }, 
    '-KXu3vLo7--JeVYC9fJa': { title: ‘JUMP' }, 
    '-KXu3yRZgFlDcS8BZ7e1': { title: 'JUMP1' } } 

在这种情况下,我怎么能得到用户实体?

顺便说一句,像这个obj [“标题”]演示文稿,我认为这应该是ECMA标准, 请让我知道在哪里参考?

回答

0

如果您知道密钥那么这很容易。例如:

obj = { 
    '-KXu3irrOjUtcejm4VF3': { 
     gold: 0, 
     title: '[email protected]', 
     uketuke: 0, 
     user: '[email protected]' 
    }, 
    '-KXu3vLo7--JeVYC9fJa': { title: 'JUMP' }, 
    '-KXu3yRZgFlDcS8BZ7e1': { title: 'JUMP1' } 
} 

var user_key = '-KXu3irrOjUtcejm4VF3' 

user = obj[user_key].user 

"[email protected]"

但是,如果你不知道在哪,然后用户存在下列功能可与渐近复杂度为O(n)的帮助对象的关键

function getUser(obj) { 
    for (var key in obj) { 
     // skip loop if the property is from prototype 
     if (!obj.hasOwnProperty(key)) continue; 
     if (typeof obj[key].user !== undefined) { 
      return obj[key].user; 
     } 
    } 
} 

getUser(obj) 

"[email protected]"

最后我在项目中使用了一些东西:jsonpath

$..user 

想从你的OBJ返回所有user。这样,你可以用一个复杂的json恕我直言去相当远。

0

谢谢, 非常反应!

1)2)对我来说没问题。

我试过了3)我尝试如下。 从'./jsonpath-0.8.0'导入jsonPath; ... text = jsonPath(snapshot.val(),“$ .. user”);

但出现以下错误。

Possible Unhandled Promise Rejection (id: 0): 
(0,_jsonpath2.default) is not a function. (In '(0,_jsonpath2.default)  (snapshot.val(),"$..user")', '(0,_jsonpath2.default)' is an instance of Object) 

有什么不对吗?

感谢 商事

0

需要做一些更正:

要从此JSON响应var obj = { title: 'ABCD', _key: '-KX9Cwwuc2FjxcG-SNY0' }访问属性值,你必须使用dot(.) operator而不是[]

如果要使用obj[title]它会给你一个错误:

Uncaught ReferenceError: title is not defined(…)

如果要使用obj.title它会给你输出:

ABCD

所以,根据复杂情况:

第一件事:字符串应该用双引号括起来。

无效的JSON:

var obj = { 
      '-KXu3irrOjUtcejm4VF3': { 
             gold: 0, 
             title: '[email protected]', 
             uketuke: 0, 
             user: '[email protected]' 
            }, 
      '-KXu3vLo7--JeVYC9fJa': { title: ‘JUMP' }, 
      '-KXu3yRZgFlDcS8BZ7e1': { title: 'JUMP1' } 
      }; 

有效的JSON:

var obj = { 
    "-KXu3irrOjUtcejm4VF3": { 
     "gold": 0, 
     "title": "[email protected]", 
     "uketuke": 0, 
     "user": "[email protected]" 
    }, 
    "-KXu3vLo7--JeVYC9fJa": { 
     "title": "JUMP" 
    }, 
    "-KXu3yRZgFlDcS8BZ7e1": { 
     "title": "JUMP1" 
    } 
}