2016-12-02 134 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" 
    } 
}