2016-12-02 14 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 ["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]"

最後に、私がプロジェクトの1つで使ったことがあります:jsonpath

$..user 

あなたのobjからすべてuserを返します。あなたは複雑なjson IMHOでかなり遠くまで行くことができます。

0

ありがとう、 非常に種類の応答!

1)2)私にとっては問題ありませんでした。

私は試しました3)私は次のように試みました。 jsonPathを './jsonpath-0.8.0'からインポートします。 ... テキスト= 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

は、いくつかの修正を行う必要があります。

あなたがdot(.) operator代わりの[]を使用する必要があり、このJSONレスポンスvar obj = { title: 'ABCD', _key: '-KX9Cwwuc2FjxcG-SNY0' }からプロパティ値にアクセスするには。だから

ABCD

:あなたはobj.titleを使用する場合

Uncaught ReferenceError: title is not defined(…)

が、それはあなたに出力を与える:あなたはobj[title]を使用する場合

は、それはあなたにエラーを与えます複雑な場合:

最初のもの:文字列は二重引用符で囲む必要があります。

無効な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" 
    } 
} 
関連する問題