public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, JsonSerializer serializer) { if (value is JFunction) { writer.WriteRawValue((value as JFunction).ToScript()); } else { writer.WriteNull(); } }
public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, JsonSerializer serializer) { IList items = (IList)value; if (value != null && items.Count > 0) { if (items.Count == 1 && this.IsSingleItemArray()) { Control item = (Control)items[0]; var pnl = item as AbstractPanel; if (!item.Visible) { writer.WriteNull(); return; } writer.WriteRawValue(this.Format(items[0] as Control)); } else { bool visible = false; foreach (Observable item in items) { if (item.Visible) { visible = true; } } if (visible) { writer.WriteStartArray(); foreach (Observable item in items) { if (item.Visible) { writer.WriteRawValue(this.Format(item)); } } writer.WriteEndArray(); } else { writer.WriteNull(); } } } }
public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, JsonSerializer serializer) { Control control = value as Control; if (control != null) { if (!control.Visible) { writer.WriteNull(); return; } writer.WriteRawValue(this.Format(control)); } }
public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, JsonSerializer serializer) { IList items = (IList)value; if (value != null && items.Count > 0) { if (items.Count == 1 && this.IsSingleItemArray()) { Control item = (Control)items[0]; if (!item.Visible) { writer.WriteNull(); return; } if (!(item is IProxyContainer)) { writer.WriteRawValue(this.Format(items[0] as Control)); } else { List<string> ids = ((IProxyContainer)item).GetIDS(); if (ids != null && ids.Count > 0) { if (ids.Count == 1) { writer.WriteRawValue(this.Format(ids[0])); } else { writer.WriteStartArray(); foreach (string id in ids) { writer.WriteRawValue(this.Format(id)); } writer.WriteEndArray(); } } } } else { bool visible = false; foreach (Observable item in items) { if (item.Visible) { visible = true; } } if (visible) { writer.WriteStartArray(); foreach (Observable item in items) { if (item.Visible) { if (!(item is IProxyContainer)) { writer.WriteRawValue(this.Format(item)); } else { List<string> ids = ((IProxyContainer)item).GetIDS(); if (ids != null && ids.Count > 0) { foreach (string id in ids) { writer.WriteRawValue(this.Format(id)); } } } } } writer.WriteEndArray(); } else { writer.WriteNull(); } } } }
private void SerializeNode(Newtonsoft.Json.JsonWriter writer, IXmlNode node, XmlNamespaceManager manager, bool writePropertyName) { switch (node.NodeType) { case XmlNodeType.Document: case XmlNodeType.DocumentFragment: SerializeGroupedNodes(writer, node, manager, writePropertyName); break; case XmlNodeType.Element: if (IsArray(node) && node.ChildNodes.All(n => n.LocalName == node.LocalName) && node.ChildNodes.Count > 0) { SerializeGroupedNodes(writer, node, manager, false); } else { manager.PushScope(); foreach (IXmlNode attribute in node.Attributes) { if (attribute.NamespaceUri == "http://www.w3.org/2000/xmlns/") { string namespacePrefix = (attribute.LocalName != "xmlns") ? attribute.LocalName : string.Empty; string namespaceUri = attribute.Value; manager.AddNamespace(namespacePrefix, namespaceUri); } } if (writePropertyName) writer.WritePropertyName(GetPropertyName(node, manager)); if (!ValueAttributes(node.Attributes).Any() && node.ChildNodes.Count == 1 && node.ChildNodes[0].NodeType == XmlNodeType.Text) { // write elements with a single text child as a name value pair writer.WriteValue(node.ChildNodes[0].Value); } else if (node.ChildNodes.Count == 0 && CollectionUtils.IsNullOrEmpty(node.Attributes)) { IXmlElement element = (IXmlElement)node; // empty element if (element.IsEmpty) writer.WriteNull(); else writer.WriteValue(string.Empty); } else { writer.WriteStartObject(); for (int i = 0; i < node.Attributes.Count; i++) { SerializeNode(writer, node.Attributes[i], manager, true); } SerializeGroupedNodes(writer, node, manager, true); writer.WriteEndObject(); } manager.PopScope(); } break; case XmlNodeType.Comment: if (writePropertyName) writer.WriteComment(node.Value); break; case XmlNodeType.Attribute: case XmlNodeType.Text: case XmlNodeType.CDATA: case XmlNodeType.ProcessingInstruction: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: if (node.NamespaceUri == "http://www.w3.org/2000/xmlns/" && node.Value == JsonNamespaceUri) return; if (node.NamespaceUri == JsonNamespaceUri) { if (node.LocalName == "Array") return; } if (writePropertyName) writer.WritePropertyName(GetPropertyName(node, manager)); writer.WriteValue(node.Value); break; case XmlNodeType.XmlDeclaration: IXmlDeclaration declaration = (IXmlDeclaration)node; writer.WritePropertyName(GetPropertyName(node, manager)); writer.WriteStartObject(); if (!string.IsNullOrEmpty(declaration.Version)) { writer.WritePropertyName("@version"); writer.WriteValue(declaration.Version); } if (!string.IsNullOrEmpty(declaration.Encoding)) { writer.WritePropertyName("@encoding"); writer.WriteValue(declaration.Encoding); } if (!string.IsNullOrEmpty(declaration.Standalone)) { writer.WritePropertyName("@standalone"); writer.WriteValue(declaration.Standalone); } writer.WriteEndObject(); break; case XmlNodeType.DocumentType: IXmlDocumentType documentType = (IXmlDocumentType)node; writer.WritePropertyName(GetPropertyName(node, manager)); writer.WriteStartObject(); if (!string.IsNullOrEmpty(documentType.Name)) { writer.WritePropertyName("@name"); writer.WriteValue(documentType.Name); } if (!string.IsNullOrEmpty(documentType.Public)) { writer.WritePropertyName("@public"); writer.WriteValue(documentType.Public); } if (!string.IsNullOrEmpty(documentType.System)) { writer.WritePropertyName("@system"); writer.WriteValue(documentType.System); } if (!string.IsNullOrEmpty(documentType.InternalSubset)) { writer.WritePropertyName("@internalSubset"); writer.WriteValue(documentType.InternalSubset); } writer.WriteEndObject(); break; default: throw new Newtonsoft.Json.JsonSerializationException("Unexpected XmlNodeType when serializing nodes: " + node.NodeType); } }