2

私はプライム [31] ソーシャル ネットワーキング プラグインと呼ばれる Facebook を処理するためにユニティ プラグインを使用しています。次のような場合にうまく機能します。

void onGraph()
    {
        Facebook.instance.graphRequest( "me", HTTPVerb.GET, ( error, obj ) =>
        {
            // if we have an error we dont proceed any further
            if( error != null )
                return;             
            if( obj == null )
                return;             
            // grab the userId and persist it for later use
            var ht = obj as Dictionary<string,object>;
            _userId = ht["id"].ToString();      

            Debug.Log( "me Graph Request finished: " + _userId );
            Prime31.Utils.logObject( ht );
        } );
    }

それはこれを返します:

 --------- IDictionary ---------
id: ########## 
name: Mike O'Connor 
first_name: Mike 
last_name: O'Connor 
link: https://www.facebook.com/########## 
username: ########## 
etc...

そして、私は一見、任意のキーを取得して、次のように変数に入れることができますよね?:

_userId = ht["id"].ToString();

しかし、私のゲームをプレイしている全員のスコアを要求すると:?

void onGetScore()

    {
        Facebook.instance.graphRequest( "AppID/scores", HTTPVerb.GET, ( error, obj ) =>
        {
            // if we have an error we dont proceed any further
            if( error != null )
                return;

            if( obj == null )
                return;
            // grab the userId and persist it for later use
            var ht = obj as Dictionary<string, object>;
            _score = ht["score"].ToString();
            Prime31.Utils.logObject( ht );
        } );
    }

次のようなネストされた辞書/リストを返します。

 --------- IDictionary --------- 

 --------- IList --------- 
data: 
    --------- IDictionary ---------
    user:    --------- IDictionary ---------
        name:   Mike O'Connor
        id:     ##########
        score:  5677
        application:     --------- IDictionary ---------
            name:   ##########
            namespace:  ##########
            id:     ##########

今はネストされているので、これを使用することはできませんよね?

_score = ht["score"].ToString();

ネストされたキーを取得するにはどうすればよいですか? それは単なる構文の問題ですか、それとも再キャストする必要がありますか (または他の何か)?

4

2 に答える 2

0

プロパティ アクセス ロジックを変更する必要があります。ht["score"]もう存在しません(または、少なくとも外側のレベルではありません。辞書にあるリストにある辞書にあります)。代わりにht["list1"].First()["score"].ToString()、データ形式が明確でないため、正確なパスがどうなるかわかりません。生の応答で更新できますか? そうすれば、私は確かにあなたに言うことができます。また、いくつかの反復を行う必要がある可能性が高いと思います。内部値を取得するために構造体が複数回ネストされているため、外部ディクショナリを反復処理し、次にそれに含まれるリストを反復処理してから、リストに含まれるディクショナリの値にアクセスする必要があります。

于 2013-08-02T18:29:52.993 に答える