Как обрабатывать эти данные JSON? - PullRequest
1 голос
/ 15 апреля 2011

Я только что обнаружил, что данные JSON, возвращаемые Facebook с использованием метода FQL, имеют другой формат, чем JSON, возвращаемый API-интерфейсом facebook facebook.

Например:

FQL <> GRAPH

uid <> id

work_history <> work

education_history <> education

Также имена полей и структура объектов в массивах различны.

Я использовал FQL и GRAPH для своего сайта.Потому что я не хочу делать 2 пользовательских занятия в Facebook.Я решил использовать только график api.

Сейчас я пытаюсь получить список всех друзей пользователя, включая данные о работе и образовании.

Я не уверен, нужен ли вам мой код, но если он нужен для решения моей проблемы, вот он: (строка json, которую я хочу обработать, приведена ниже)

public static List<FbUser> getFriends(string id, string token)
{

    //get all id's of friends
    string jsonUrl = graphUrl + "/" + id + "/friends?access_token=" + token;
    var json = new WebClient().DownloadString(jsonUrl);
    FbUserList useridlist = JsonConvert.DeserializeObject<FbUserList>(json);

    //get all data of friends
    jsonUrl = graphUrl + "?ids=" + useridlist.getIds() + "&access_token=" + token;
    json = new WebClient().DownloadString(jsonUrl);
    List<FbUser> userlist = JsonConvert.DeserializeObject<List<FbUser>>(json.Insert(0,"[") + "]");
    return userlist;

}

useridlist.cs

public class FbUserList
{
    private List<FbObject> _data;

public List<FbObject> data
{
    get
    {
        return _data;
    }
    set
    {
        _data = value;
    }
}

public string getIds()
{
    string result = "";
    foreach (FbObject o in _data) {
        result += o.id + ",";
    }
    string test = result.Substring(0, result.Length - 1);
    return test;
}
}

После этого в переменной json я получаю следующие данные:

[{"505757632":{"id":"505757632","name":"Cecilia demo","first_name":"Cecilia", ....},
    {"507493765":{"id":"507493765","name":"Bjorn demo","first_name":"Bjorn", .....}
    , ... ]

Я не знаю, как получить список пользователей.объекты из этих данных.пользовательский объект имеет такие поля, как: id, name, first_name, ... Так что мне нужно избавиться от дополнительного объекта, который обернут вокруг моего пользовательского объекта.

Любая помощь очень ценится!

1 Ответ

5 голосов
/ 15 апреля 2011

Объект, деформирующий записи пользователя, - это Словарь.

class FbUser()
{
   public string id { get;set;}
   public string name { get;set;}
   public string first_name { get;set;}
  .... a property name for every data element in the returned record.
}


Dictionary<string,FbUser> userlist = JsonConvert.DeserializeObject<Dictionary<string,FbUser>();

Если вам действительно нужны данные в виде списка, вы можете сделать что-то вроде.

List<FbUser> userlist = JsonConvert.DeserializeObject<Dictionary<string,FbUser>().Values.ToList<FbUser>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...