.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Data;
using System.Linq;
using System.Xml;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using Formatting = Newtonsoft.Json.Formatting;
					
public class Program
{
	public static void Main()
	{
		DataSet ds = new DataSet();
		DataTable dt = new DataTable();
		dt.TableName = "Table";
		dt.Columns.Add("id");
		dt.Columns.Add("value");
		dt.Rows.Add("1", "hi");
		ds.Tables.Add(dt);

		
		var dsString = JsonConvert.SerializeObject(ds);
		
		var model = JsonConvert.DeserializeObject<DataTableToModel>(dsString);
		
		//Console.WriteLine(model.ModelProperty.id);
		//Console.WriteLine(model.ModelProperty.value);
		
		var json = JsonConvert.SerializeObject(model.ModelProperty);
		
		Console.WriteLine(json);
	}
}

public class DataTableToModel
{
    /// <summary>
    /// Deserialize from DataTable, set ModelProperty from first row
    /// </summary>
    [JsonProperty("Table")]
    private List<Model> ModelSetter { set { this.ModelProperty = value.FirstOrDefault(); } }

    /// <summary>
    /// Serialize Model
    /// </summary>
    [JsonProperty("Model")]
    public Model ModelProperty { get; set; }
}

/// <summary>
/// Model that has id and value properties expected from DataTable
/// </summary>
public class Model 
{
    [JsonProperty("id")]
    public string id { get; set; }

    [JsonProperty("value")]       
    public string value { get; set; }
}
;