2011-01-20 35 views
8

Tôi phải sử dụng facebook C# sdk cho một bài viết mới trong .net 3.5, tôi biết rằng phiên bản mới nhất có các ví dụ cho 4 - nhưng nó cũng được biên dịch so với 3.5 để hoạt động hoàn toàn .JsonObject mô hình Facebook SDK

Dù sao, và tha thứ cho tôi nếu tôi vô cùng câm lặng. Nhưng tôi đang tìm cách để chuyển đổi một đối tượng json vào mô hình của tôi, tôi có thể làm một cái gì đó như thế này?

public ActionResult About() 
{ 
    var app = new FacebookApp(); 
    JsonObject friends = (JsonObject)app.Get("me/friends"); 
    ViewData["Albums"] = new Friends((string)friends.ToString()); 
    return View(); 
} 

public class Friends 
{ 
    public string name { get; set; } 
    public string id { get; set; } 

    public Friends(string json) 
    { 
     JArray jObject = JArray.Parse(json); 
     JToken jData = jObject["data"]; 

     name = (string)jData["name"]; 
     id = (string)jData["id"]; 
    } 
} 

Điều này đang sử dụng Json.Net. Rõ ràng điều này không hiệu quả, lỗi tôi nhận được là

Lỗi khi đọc JArray từ JsonReader. Mục JsonReader hiện tại không phải là một mảng: StartObject

Tôi khá chắc chắn rằng tôi sẽ hoàn toàn sai cách xung quanh điều này - vì vậy nếu có ai có thể đưa ra bất kỳ mẹo nào, tôi sẽ vô cùng biết ơn.

Trả lời

14

Có lẽ mã này sẽ giúp:

public class Friend 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
} 

... 

public ActionResult About() 
{ 
    var app = new FacebookApp(); 
    var result = (JsonObject)app.Get("me/friends")); 
    var model = new List<Friend>(); 

    foreach(var friend in (JsonArray)result["data"]) 
     model.Add(new Friend() 
     { 
      Id = (string)(((JsonObject)friend)["id"]), 
      Name = (string)(((JsonObject)friend)["name"]) 
     }; 

    return View(model); 
} 

Bây giờ mô hình của bạn sẽ được loại List<Friend>

0

Bạn cũng có thể ánh xạ trực tiếp từ dữ liệu nhận được (JSON) vào một danh sách các đối tượng sử dụng Json.NET. Một cái gì đó như thế này:

var fbData = app.Get("me/friends")); 
var friendsList = JsonConvert.DeserializeObject<List<Friend>>(fbData.ToString()); 

Nó rất ngắn và tạo và tự động điền danh sách.

Lưu ý: ánh xạ được thực hiện theo cách phân biệt chữ hoa chữ thường (thuộc tính lớp có thể có trường hợp khác với thuộc tính JSON).

Các vấn đề liên quan