2015-06-06 196 views
-2

我有一個feed對象,它充滿了反序列化的json數據。我試圖在2個xamarin android活動之間傳遞一個feed對象。如何在活動之間傳遞對象

我該如何做到這一點?

我知道putseriazable,但我不知道如何實現這一點。

public class Feed 
{ 
    public class Author 
    { 
     public int id { get; set; } 
     public string slug { get; set; } 
     public string name { get; set; } 
     public string first_name { get; set; } 
     public string last_name { get; set; } 
     public string nickname { get; set; } 
     public string url { get; set; } 
     public string description { get; set; } 
    }  

    public class CustomFields 
    { 
     public List<string> sno_headline { get; set; } 
     public List<string> sno_deck { get; set; } 
     public List<string> sno_format { get; set; } 
     public List<string> sno_longform_order { get; set; } 
     public List<string> sno_longform_title { get; set; } 
     public List<string> sno_sr_tag { get; set; } 
     public List<string> sno_sr_cat { get; set; } 
     public List<string> sno_sr_title { get; set; } 
     public List<string> sno_longform_main_title { get; set; } 
     public List<string> sno_rails_number { get; set; } 
     public List<string> sno_rails_writer { get; set; } 
     public List<string> sno_rails_type { get; set; } 
     public List<string> sno_rails_stories { get; set; } 
     public List<string> sno_longform_image { get; set; } 
     public List<string> sno_longform_image_master { get; set; } 
     public List<string> sno_teaser { get; set; } 
     public List<string> writer { get; set; } 
     public List<string> jobtitle { get; set; } 
     public List<string> featureimage { get; set; } 
     public List<string> video { get; set; } 
     public List<string> videographer { get; set; } 
     public List<string> videolocation { get; set; } 
     public List<string> related { get; set; } 
     public List<string> audio { get; set; } 
     public List<string> customlink { get; set; } 
     public List<string> story_sport { get; set; } 
     public List<string> teasertitle { get; set; } 
     public List<string> teaser { get; set; } 
     public List<string> grade { get; set; } 
     public List<string> showratings { get; set; } 
     public List<string> date { get; set; } 
     public List<string> ourscore { get; set; } 
     public List<string> theirscore { get; set; } 
     public List<string> opponent { get; set; } 
     public List<string> sport { get; set; } 
    } 

    public class Full 
    { 
     public string url { get; set; } 
     public int width { get; set; } 
     public int height { get; set; } 
    } 

    public class Thumbnail 
    { 
     public string url { get; set; } 
     public int width { get; set; } 
     public int height { get; set; } 
    } 

    public class Medium 
    { 
     public string url { get; set; } 
     public int width { get; set; } 
     public int height { get; set; } 
    } 

    public class Large 
    { 
     public string url { get; set; } 
     public int width { get; set; } 
     public int height { get; set; } 
    } 

    public class Carouselthumb 
    { 
     public string url { get; set; } 
     public int width { get; set; } 
     public int height { get; set; } 
    } 

    public class Tsmediumblock 
    { 
     public string url { get; set; } 
     public int width { get; set; } 
     public int height { get; set; } 
    } 

    public class Tsbigblock 
    { 
     public string url { get; set; } 
     public int width { get; set; } 
     public int height { get; set; } 
    } 

    public class Small 
    { 
     public string url { get; set; } 
     public int width { get; set; } 
     public int height { get; set; } 
    } 

    public class ThumbnailImages 
    { 
     public Full full { get; set; } 
     public Thumbnail thumbnail { get; set; } 
     public Medium medium { get; set; } 
     public Large large { get; set; } 
     public Carouselthumb carouselthumb { get; set; } 
     public Tsmediumblock tsmediumblock { get; set; } 
     public Tsbigblock tsbigblock { get; set; } 
     public Small small { get; set; } 
    } 

    public class Post 
    { 
     public int id { get; set; } 
     public string type { get; set; } 
     public string slug { get; set; } 
     public string url { get; set; } 
     public string status { get; set; } 
     public string title { get; set; } 
     public string title_plain { get; set; } 
     public string content { get; set; } 
     public string excerpt { get; set; } 
     public string date { get; set; } 
     public string modified { get; set; } 
     public List<object> categories { get; set; } 
     public List<object> tags { get; set; } 
     public Author author { get; set; } 
     public List<object> comments { get; set; } 
     public List<object> attachments { get; set; } 
     public int comment_count { get; set; } 
     public string comment_status { get; set; } 
     public CustomFields custom_fields { get; set; } 
     public string thumbnail { get; set; } 
     public string thumbnail_size { get; set; } 
     public ThumbnailImages thumbnail_images { get; set; } 
    } 

    public class Query 
    { 
     public bool ignore_sticky_posts { get; set; } 
    } 

    public class RootObject 
    { 
     public string status { get; set; } 
     public int count { get; set; } 
     public int count_total { get; set; } 
     public int pages { get; set; } 
     public List<Post> posts { get; set; } 
     public Query query { get; set; } 
    } 
} 

回答

2

你可以使用Newtonsoft JSON來的類轉換成JSON字符串,並把這個字符串,然後在新的活動反序列化。

確保您引用Newtonsoft JSON

var MySerializedObject = JsonConvert.SerializeObject(MyComplexObject); 
MyIntent.PutExtra("MyComplexObject", MySerializedObject); 

然後,拿回來的對象......

var MyJsonString = Intent.GetStringExtra("MyComplexObject"); 
var MyObject = JsonConvert.DeserializeObject<ObjectType>(MyJsonString); 

只要確保MyJsonString是你期待什麼,是在反序列化之前不爲null,否則會引發異常。