Получить счет игрока с помощью JSON

Я пытаюсь получить счет игрока с помощью API facebook в Unity. Это код, который я использую:

if (FB.IsLoggedIn) {
    FB.API("/me/scores", Facebook.HttpMethod.GET, scoreRetrieved);
}

public void scoreRetrieved(FBResult result) {
    var dict = Json.Deserialize(result.Text) as Dictionary<string,object>;
    print (dict["score"]);
}

и это результат FBResult result.text:

{"data":[{"user":{"id":"1000015239203","name":"AAA BBB"},"score":30,"application":{"name":"game","id":"2419296161993"}}]}

Как я могу получить доступ к счету? У меня это не работает, есть ошибка, потому что ключ не существует!


person Oussama Bouthouri    schedule 23.05.2014    source источник
comment
Да, данные - единственный ключ, который существует в dict   -  person WizKid    schedule 23.05.2014
comment
так как я могу получить доступ к баллу?   -  person Oussama Bouthouri    schedule 23.05.2014
comment
dict ['данные'] [0] ['оценка']   -  person WizKid    schedule 23.05.2014
comment
Невозможно применить индексирование с помощью [] к выражению типа `объект '   -  person Oussama Bouthouri    schedule 23.05.2014
comment
здесь был дан ответ: D У меня такая же проблема stackoverflow.com/questions/22739791/   -  person Bichodbz    schedule 11.11.2014


Ответы (2)


Если вы расширите формат вашего массива JSON, чтобы он был более удобочитаемым, он будет выглядеть так:

{
    "data":[
        {
            "user": {
                "id":   "1000015239203",
                "name": "AAA BBB"
            },
            "score": 30,
            "application": {
                "name": "game",
                "id":   "2419296161993"
            }
        }
    ]
}

Следовательно, чтобы получить доступ к Score, вам необходимо

dict['data']['score']

или возможно:

dict.data.score

в зависимости от языка.

person Steven Scott    schedule 23.05.2014

это было больно, но я нашел решение:

public void scoreRetrived(FBResult result){
    var dict = Json.Deserialize(result.Text) as Dictionary<string,object>;
    List<object> data = dict["data"] as List<object>;
    int playerScore = int.Parse(((Dictionary<string, object>)data.ToArray()[0])["score"].ToString());
}

вау наконец-то !!

person Oussama Bouthouri    schedule 23.05.2014