2010-07-27 2 views
4

Я работаю в C# с API-интерфейсом Graph и могу получить информацию о профиле пользователя Facebook, такую ​​как идентификатор, имя и адрес электронной почты, а затем десериализовать JSON, чтобы иметь возможность назначать значения для меток.Facebook Graph API получить друзей с json и C#

Тем не менее, моя проблема в том, когда я иду, чтобы захватить список друзей или список чего-нибудь в этом отношении, как мне сделать десериализацию этой информации JSON на C#, чтобы я мог хранить данные? Я считаю, что я ищу способ десериализации результатов на объект словаря, чтобы затем я мог прокручивать данные.

+0

Вы можете использовать JSON парсер, как @zengr упомянуто ниже, но на самом деле - большинство JSON десериализации может быть сделано с помощью встроенного в .NET deseriazlier - DataContractJsonSerializer. Вам просто нужны правильные атрибуты (DataMember) для класса, к которому вы пытаетесь десериализоваться. Возможно, вы можете вставить то, что похоже на JSON? Возможно, посмотрите на этот вопрос SO: http://stackoverflow.com/questions/596271/deserialization-problem-with-datacontractjsonserializer – RPM1984

+0

В настоящее время я использую .NET-десериализатор для полей типа не списка, таких как userid и name. Я хотел бы иметь возможность придерживаться этого, если это возможно. Вот пример списка друзей, в котором я пытаюсь прочитать. {"data": [{"id": "123456", "name": "barney rubble"}, {"id": «987654», «name»: «wilma flintstone»}, {«id»: «123654», «name»: «fred flintstone»}]} – user402880

ответ

10

Ну .. Я в конечном итоге использовал JSON.Net, и он отлично поработал. Спасибо, что указал мне в этом направлении. С помощью другой статьи, которую я нашел (http://www.mattcashatt.com) и файлов JSON.net, я смог получить все, что работает. Вот некоторые из кода, который я использовал.

  #region JSON.Net User Profile 
      //Profile URL 
      url = "https://graph.facebook.com/me?fields=id,name,email&access_token=" + oAuth.Token; 

      JObject myProfile = JObject.Parse(requestFBData(url)); 
      string myID = myProfile["id"].ToString().Replace("\"", ""); 
      string myName = myProfile["name"].ToString().Replace("\"", ""); 
      string email = myProfile["email"].ToString().Replace("\"", ""); 

      lblID.Text = myID; 
      lblFullName.Text = myName; 
      lblEmail.Text = email; 
      imgUser.ImageUrl = "https://graph.facebook.com/me/picture?type=large&access_token=" + oAuth.Token; 

      #endregion 


      #region JSON.Net Friends 

      //Friends URL 
      url = "https://graph.facebook.com/me/friends?access_token=" + oAuth.Token; 


      JObject myFriends = JObject.Parse(requestFBData(url)); 

      string id=""; 
      string name = ""; 

      //Loop through the returned friends 
      foreach (var i in myFriends["data"].Children()) 
      { 
       id = i["id"].ToString().Replace("\"", ""); 
       name = i["name"].ToString().Replace("\"", ""); 
       lblFriends.Text = lblFriends.Text + "<br/> " + "id: " + id + " name: " + name + "<img src=" + "https://graph.facebook.com/" + id + "/picture>"; 
      } 

      #endregion 



     } 
    } 

} 

public string requestFBData(string action) 
{ 
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(action); 
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 

    StreamReader sr = new StreamReader(resp.GetResponseStream()); 
    string results = sr.ReadToEnd(); 
    sr.Close(); 

    return results; 
} 
+1

спасибо за быстрый и простой пример. – sondlerd

+0

Какой анализатор JSON вы использовали? – abhi

Смежные вопросы