2016-12-02 3 views
0

Кто-то сказал мне.Как извлечь json Response?

obj - ответ JSON.

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

я могу получить ABCD с помощью console.log (OBJ [ "название»]).

Как насчет сложном случае?

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

В этом случае, как я могу получить пользователь юридическое лицо?

Кстати, как это obj ["title"] презентация, я думаю, что это должен быть стандарт 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 

вернет все user из вашего объекта. Таким образом, вы можете пойти довольно далеко со сложным json IMHO.

0

Спасибо, очень отклик!

1) 2) был в порядке для меня.

Я пробовал 3) Я пробовал следующим образом. Импорт jsonPath из './jsonpath-0.8.0'; ... 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) 

что-то не так?

Благодаря Shoji

0

нужно сделать некоторые корректировки:

Чтобы получить доступ к значению свойства из этого JSON ответ var obj = { title: 'ABCD', _key: '-KX9Cwwuc2FjxcG-SNY0' } вы должны использовать dot(.) operator вместо [].

Если вы будете использовать obj[title] это даст вам ошибку:

Uncaught ReferenceError: title is not defined(…)

Если вы будете использовать obj.title это даст вам выход:

ABCD

Итак, в соответствии с сложный футляр:

Первое, что нужно: Строки должны быть завернуты в двойные кавычки.

Invalid JSON:

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

Valid JSON:

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