2011-01-20 14 views
8

मुझे फेसबुक सी # एसडीके का उपयोग नेट 3.5 में एक नए पोइजेक्ट के लिए करना है, मुझे पता है कि नवीनतम संस्करण में 4 के लिए उदाहरण हैं - लेकिन यह 3.5 के खिलाफ भी संकलित है, इसलिए पूरी तरह से काम करता है ।मॉडल फेसबुक के लिए जेसनऑब्जेक्ट एसडीके

वैसे भी, और मुझे माफ़ कर दो अगर मैं अविश्वसनीय रूप से गूंगा हूं। लेकिन मैं अपने मॉडल में एक जेसन ऑब्जेक्ट को कन्वर्ट करना चाहता हूं, क्या मैं ऐसा कुछ कर सकता हूं?

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"]; 
    } 
} 

यह जेसन.Net का उपयोग कर रहा है। जाहिर है यह काम नहीं करता है, त्रुटि मुझे वापस मिलती है

जेसनरेडर से जेएरे पढ़ने में त्रुटि। वर्तमान जेसन रीडर आइटम एक सरणी नहीं है: StartObject

मुझे पूरा यकीन है कि मैं इस बारे में पूरी तरह से गलत तरीके से जा रहा हूं - इसलिए यदि कोई भी सुझाव दे सकता है तो मैं अविश्वसनीय रूप से आभारी हूं।

उत्तर

14

हो सकता है कि इस कोड को मदद मिलेगी:

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); 
} 

अब आप अपने मॉडल प्रकार List<Friend>

0

तुम भी सीधे प्राप्त डेटा (JSON) Json.NET का उपयोग कर वस्तुओं की एक सूची से मैप कर सकते हैं के लिए किया जाएगा। कुछ ऐसा:

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

यह बहुत छोटा है और स्वचालित रूप से सूची बनाता है और पॉप्युलेट करता है।

नोट: मैपिंग केस-असंवेदनशील तरीके से किया जाता है (कक्षा संपत्ति में जेएसओएन संपत्ति से अलग मामला हो सकता है)।

संबंधित मुद्दे