public override void Serialize(IJsonWriter writer, object value) { if (writer == null) { throw new ArgumentNullException("writer"); } if (value == null) { throw new ArgumentNullException("value"); } // serialize generic dictionary if (!(value is IDictionary)) { throw new TypeContractViolation(this.GetType(), "be dictionary"); } writer.Context.Hierarchy.Push(value); // object if (isStringKeyType) { writer.WriteObjectBegin((value as IDictionary).Count); foreach (DictionaryEntry pair in (value as IDictionary)) { var keyStr = default(string); if (pair.Key is float) { keyStr = ((float)pair.Key).ToString("R", writer.Context.Format); } else if (pair.Key is double) { keyStr = ((double)pair.Key).ToString("R", writer.Context.Format); } else { keyStr = Convert.ToString(pair.Key, writer.Context.Format); } // key writer.WriteMember(keyStr); // value writer.WriteValue(pair.Value, valueType); } writer.WriteObjectEnd(); } else { writer.WriteArrayBegin((value as IDictionary).Count); foreach (DictionaryEntry pair in (value as IDictionary)) { writer.WriteArrayBegin(2); writer.WriteValue(pair.Key, keyType); writer.WriteValue(pair.Value, valueType); writer.WriteArrayEnd(); } writer.WriteArrayEnd(); } writer.Context.Hierarchy.Pop(); }
public override void Serialize(IJsonWriter writer, object value) { if (writer == null) { throw new ArgumentNullException("writer"); } if (value == null) { throw new ArgumentNullException("value"); } var size = 0; if (value is ICollection) { size = ((ICollection)value).Count; } else { size = ((IEnumerable)value).Cast <object>().Count(); } writer.WriteArrayBegin(size); foreach (var item in (IEnumerable)value) { writer.WriteValue(item, this.elementType); } writer.WriteArrayEnd(); }
public override void Serialize(IJsonWriter writer, object value) { if (writer == null) { throw new ArgumentNullException("writer"); } if (value == null) { throw new ArgumentNullException("value"); } var dictionary = (IDictionary)value; // ReSharper disable PossibleMultipleEnumeration writer.Context.Hierarchy.Push(value); // object if (this.isStringKeyType) { writer.WriteObjectBegin(dictionary.Count); foreach (DictionaryEntry pair in dictionary) { var keyStr = Convert.ToString(pair.Key, writer.Context.Format); // key writer.WriteMember(keyStr); // value writer.WriteValue(pair.Value, this.valueType); } writer.WriteObjectEnd(); } else { writer.WriteArrayBegin(dictionary.Count); foreach (DictionaryEntry pair in dictionary) { writer.WriteArrayBegin(2); writer.WriteValue(pair.Key, this.keyType); writer.WriteValue(pair.Value, this.valueType); writer.WriteArrayEnd(); } writer.WriteArrayEnd(); } // ReSharper restore PossibleMultipleEnumeration writer.Context.Hierarchy.Pop(); }
public override void Serialize(IJsonWriter writer, object value) { if (writer == null) { throw new ArgumentNullException("writer"); } if (value == null) { throw new ArgumentNullException("value"); } var vector2 = (Vector2)value; writer.WriteArrayBegin(2); writer.Write(vector2.x); writer.Write(vector2.y); writer.WriteArrayEnd(); }