private static MyJObject SortProperties(MyJObject original)
        {
            var newObject = new MyJObject();

            foreach (var prop in original.OrderBy(p => p.Name))
            {
                if (prop.Value is MyJObject)
                {
                    prop.Value = SortProperties((MyJObject)prop.Value);
                }
                else if (prop.Value is MyJArray)
                {
                    prop.Value = SortArray((MyJArray)prop.Value);
                }
                newObject.Add(prop);
            }
            return(newObject);
        }
Exemple #2
0
        internal static MyJObject Parse(JsonReader reader)
        {
            if (reader.TokenType == JsonToken.None)
            {
                reader.Read();                //all'inizio mi posiziono sullo start object
            }
            MyJObject   obj         = new MyJObject();
            MyJProperty currentProp = null;

            while (reader.Read())
            {
                switch (reader.TokenType)
                {
                case JsonToken.PropertyName:
                    currentProp      = new MyJProperty();
                    currentProp.Name = reader.Value.ToString();
                    obj.Add(currentProp);
                    break;

                case JsonToken.StartObject:
                    if (currentProp != null)
                    {
                        currentProp.Value = MyJObject.Parse(reader);
                    }
                    break;

                case JsonToken.EndObject:
                    return(obj);

                case JsonToken.StartArray:
                    currentProp.Value = MyJArray.Parse(reader);
                    break;

                case JsonToken.Comment:
                    currentProp.Comment = reader.Value.ToString();
                    break;

                default:
                    currentProp.Value = reader.Value;
                    break;
                }
            }
            return(obj);
        }