Newtonsoft.Json.Converters.DataTableConverter.ReadJson C# (CSharp) Méthode

ReadJson() public méthode

Reads the JSON representation of the object.
public ReadJson ( JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer ) : object
reader JsonReader The to read from.
objectType System.Type Type of the object.
existingValue object The existing value of object being read.
serializer JsonSerializer The calling serializer.
Résultat object
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
      DataTable dt;

      if (reader.TokenType == JsonToken.PropertyName)
      {
        dt = new DataTable((string)reader.Value);
        reader.Read();
      }
      else
      {
        dt = new DataTable();
      }

      reader.Read();

      while (reader.TokenType == JsonToken.StartObject)
      {
        DataRow dr = dt.NewRow();
        reader.Read();

        while (reader.TokenType == JsonToken.PropertyName)
        {
          string columnName = (string) reader.Value;

          reader.Read();

          if (!dt.Columns.Contains(columnName))
          {
            Type columnType = GetColumnDataType(reader.TokenType);
            dt.Columns.Add(new DataColumn(columnName, columnType));
          }

          dr[columnName] = reader.Value ?? DBNull.Value;
          reader.Read();
        }

        dr.EndEdit();
        dt.Rows.Add(dr);

        reader.Read();
      }

      return dt;
    }

Usage Example

        /// <summary>
        /// Reads the JSON representation of the object.
        /// </summary>
        /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
        /// <param name="objectType">Type of the object.</param>
        /// <param name="existingValue">The existing value of object being read.</param>
        /// <param name="serializer">The calling serializer.</param>
        /// <returns>The object value.</returns>
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            // handle typed datasets
            DataSet ds = (objectType == typeof(DataSet))
                ? new DataSet()
                : (DataSet)Activator.CreateInstance(objectType);

            DataTableConverter converter = new DataTableConverter();

            reader.Read();

            while (reader.TokenType == JsonToken.PropertyName)
            {
                DataTable dt = ds.Tables[(string)reader.Value];
                bool exists = (dt != null);

                dt = (DataTable)converter.ReadJson(reader, typeof(DataTable), dt, serializer);

                if (!exists)
                    ds.Tables.Add(dt);

                reader.Read();
            }

            return ds;
        }
All Usage Examples Of Newtonsoft.Json.Converters.DataTableConverter::ReadJson