예제 #1
0
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var dataResult = value as DataResult;

            #region 序列化DataResult对象

            writer.WriteStartObject();
            // 写total属性
            writer.WritePropertyName("total");
            serializer.Serialize(writer, dataResult.Total);
            // 写pagecount属性
            writer.WritePropertyName("pagecount");
            serializer.Serialize(writer, dataResult.PageCount);
            // 写pageindex属性
            writer.WritePropertyName("pageindex");
            serializer.Serialize(writer, dataResult.PageIndex);

            // 写rows属性
            var converter = new DataTableConverter();
            writer.WritePropertyName("rows");
            converter.WriteJson(writer, dataResult.Data, serializer);
            writer.WriteEndObject();

            #endregion
    }
        public void SerializeValues()
        {
            DataTable dt = new DataTable();
            Dictionary <Type, object> types = new Dictionary <Type, object>
            {
                [typeof(TimeSpan)]   = TimeSpan.Zero,
                [typeof(char[])]     = new char[] { 'a', 'b', 'c' },
                [typeof(Type)]       = typeof(string),
                [typeof(Object)]     = new object(),
                [typeof(byte[])]     = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 },
                [typeof(Uri)]        = new Uri("http://localhost"),
                [typeof(Guid)]       = new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),
                [typeof(BigInteger)] = BigInteger.Parse("10000000000000000000000000000000000")
            };

            foreach (var ss in types)
            {
                dt.Columns.Add(ss.Key.Name, ss.Key);
            }

            dt.Rows.Add(types.Select(t => t.Value).ToArray());

            StringWriter   sw         = new StringWriter();
            JsonTextWriter jsonWriter = new JsonTextWriter(sw);

            jsonWriter.Formatting = Formatting.Indented;

            DataTableConverter converter = new DataTableConverter();

            converter.WriteJson(jsonWriter, dt, new JsonSerializer());

            string stringName = typeof(string).AssemblyQualifiedName;

            StringAssert.AreEqual(
                @"[
  {
    ""TimeSpan"": ""00:00:00"",
    ""Char[]"": [
      ""a"",
      ""b"",
      ""c""
    ],
    ""Type"": """
                + stringName
                + @""",
    ""Object"": {},
    ""Byte[]"": ""AQIDBAUGBwg="",
    ""Uri"": ""http://localhost"",
    ""Guid"": ""00000001-0002-0003-0405-060708090a0b"",
    ""BigInteger"": 10000000000000000000000000000000000
  }
]",
                sw.ToString()
                );
        }
        public void WriteJsonNull()
        {
            StringWriter   sw         = new StringWriter();
            JsonTextWriter jsonWriter = new JsonTextWriter(sw);

            DataTableConverter converter = new DataTableConverter();

            converter.WriteJson(jsonWriter, null, null);

            StringAssert.AreEqual(@"null", sw.ToString());
        }
        public void SerializeNullValues()
        {
            DataTable   dt    = new DataTable();
            List <Type> types = new List <Type>
            {
                typeof(TimeSpan),
                typeof(char[]),
                typeof(Type),
                typeof(Object),
                typeof(byte[]),
                typeof(Uri),
                typeof(Guid),
                typeof(BigInteger)
            };

            foreach (var ss in types)
            {
                dt.Columns.Add(ss.Name, ss);
            }

            dt.Rows.Add(types.Select(t => (object)null).ToArray());

            StringWriter   sw         = new StringWriter();
            JsonTextWriter jsonWriter = new JsonTextWriter(sw);

            jsonWriter.Formatting = Formatting.Indented;

            DataTableConverter converter = new DataTableConverter();

            converter.WriteJson(jsonWriter, dt, new JsonSerializer());

            StringAssert.AreEqual(
                @"[
  {
    ""TimeSpan"": null,
    ""Char[]"": null,
    ""Type"": null,
    ""Object"": null,
    ""Byte[]"": null,
    ""Uri"": null,
    ""Guid"": null,
    ""BigInteger"": null
  }
]",
                sw.ToString()
                );
        }
예제 #5
0
        /// <summary>
        /// Writes the JSON representation of the object.
        /// </summary>
        /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
        /// <param name="value">The value.</param>
        /// <param name="serializer">The calling serializer.</param>
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            DataSet dataSet = (DataSet)value;
            DefaultContractResolver resolver = serializer.ContractResolver as DefaultContractResolver;

            DataTableConverter converter = new DataTableConverter();

            writer.WriteStartObject();

            foreach (DataTable table in dataSet.Tables)
            {
                writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(table.TableName) : table.TableName);

                converter.WriteJson(writer, table, serializer);
            }

            writer.WriteEndObject();
        }
예제 #6
0
            /// <summary>
            /// Writes the JSON representation of the object.
            /// </summary>
            /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
            /// <param name="value">The value.</param>
            public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
            {
                DataSet dataSet = value as DataSet;

                DataTableConverter converter = new DataTableConverter(this.replaceColumnNameWithDefaultNameProperty);

                writer.WriteStartObject();

                writer.WritePropertyName("Tables");
                writer.WriteStartArray();

                foreach (DataTable table in dataSet.Tables)
                {
                    converter.WriteJson(writer, table, serializer);
                }
                writer.WriteEndArray();
                writer.WriteEndObject();
            }
예제 #7
0
        public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object dataset,
                                       Newtonsoft.Json.JsonSerializer serializer)
        {
            System.Data.DataSet dataSet = dataset as System.Data.DataSet;

            DataTableConverter converter = new DataTableConverter();

            writer.WriteStartObject();

            writer.WritePropertyName("Tables");
            writer.WriteStartArray();

            foreach (System.Data.DataTable table in dataSet.Tables)
            {
                converter.WriteJson(writer, table, serializer);
            }

            writer.WriteEndArray();
            writer.WriteEndObject();

            converter = null;
        }