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