Example #1
0
        public static String Write(object objectToWrite)
        {
            StringBuilder oString    = new StringBuilder();
            Type          objectType = objectToWrite.GetType();

            oString.Append(JSONWriter.Write(objectToWrite));
            HandlePersistentChildCollections(objectToWrite, oString, null);
            return(oString.ToString());
        }
Example #2
0
        private static void HandlePersistentChildCollections(object parentObject, StringBuilder parentStringBuilder, object previousObject)
        {
            if (parentObject != null)
            {
                Type parentObjectType = parentObject.GetType();

                List <PropertyInfo> childCollectionProperties = parentObjectType.GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(PersistentCollection))).ToList();
                for (int j = 0; j < childCollectionProperties.Count; j++)
                {
                    IList childCollectionObject = (IList)childCollectionProperties[j].GetValue(parentObject, null);

                    string lastCharacters     = parentStringBuilder.ToString().Substring(parentStringBuilder.Length - 50);
                    string previousObjectName = null;
                    if (previousObject != null)
                    {
                        previousObjectName = previousObject.GetType().Name;
                    }

                    Console.WriteLine(childCollectionObject.GetType().Name + ", " + previousObjectName + ":  " + lastCharacters);

                    parentStringBuilder.Insert(parentStringBuilder.Length - 1, "*" + childCollectionObject.GetType().Name + "*");
                    StringBuilder collectionStringBuilder = new StringBuilder(", \"" + childCollectionObject.GetType().Name + "\":[");

                    for (int i = 0; i < childCollectionObject.Count; i++)
                    {
                        object        collectionItem     = childCollectionObject[i];
                        StringBuilder childStringBuilder = new StringBuilder(JSONWriter.Write(collectionItem));
                        HandlePersistentChildCollections(collectionItem, childStringBuilder, childCollectionObject);
                        collectionStringBuilder.Append(childStringBuilder);

                        if (i < childCollectionObject.Count - 1)
                        {
                            collectionStringBuilder.Append(", ");
                        }
                    }

                    if (j == childCollectionObject.Count - 1)
                    {
                        collectionStringBuilder.Append("]");
                    }
                    else
                    {
                        collectionStringBuilder.Append("], *NEXTCOLLECTION*");
                    }

                    parentStringBuilder.Replace("*" + childCollectionObject.GetType().Name + "*", collectionStringBuilder.ToString());
                }
            }
        }