public ActivityPost ParseFromJson(Dictionary <string, object> json)
        {
            Id   = (string)json["Id"];
            Text = json["Text"] as string;

            ImageUrl    = json["ImageUrl"] as string;
            ButtonTitle = json["ButtonTitle"] as string;
#pragma warning disable 0618
            ButtonAction = json["ButtonAction"] as string;
#pragma warning restore 0618
            var action = json["Action"] as Dictionary <string, object>;
            if (action != null)
            {
                Action = new GetSocialAction().ParseFromJson(action);
            }
            CreatedAt = DateUtils.FromUnixTime((long)json["CreatedAt"]);

            var authorDic = json["Author"] as Dictionary <string, object>;
            Author = new PostAuthor().ParseFromJson(authorDic);

            CommentsCount = (int)(long)json["CommentsCount"];
            LikesCount    = (int)(long)json["LikesCount"];
            IsLikedByMe   = (bool)json["IsLikedByMe"];

            StickyStart = DateUtils.FromUnixTime((long)json["StickyStart"]);
            StickyEnd   = DateUtils.FromUnixTime((long)json["StickyEnd"]);
            Mentions    = GSJsonUtils.ParseList <Mention>(json["Mentions"] as string);
            FeedId      = json["FeedId"] as string;

            return(this);
        }
 static void GetObjectCallback <T>(IntPtr actionPtr, string json) where T : IConvertableFromNative <T>, new()
 {
     if (actionPtr != IntPtr.Zero)
     {
         var result = GSJsonUtils.Parse <T>(json);
         IOSUtils.TriggerCallback(actionPtr, result);
     }
 }
        static void GetObjectsDictionaryCallback <TValue>(IntPtr actionPtr, string json) where TValue : IConvertableFromNative <TValue>, new()
        {
            var result = GSJsonUtils.ParseDictionary <PublicUser>(json);

            IOSUtils.TriggerCallback(actionPtr, result);
        }