# Inline Type Conversion

If you don't want to write a full `ITypeConverter` implementation, you can specify a function that will do the same thing.

## Reading

###### Data

    Id,Name,Json
    1,one,"{ ""Foo"": ""Bar"" }"

###### Example

    void Main()
    {
        using (var reader = new StreamReader("path\\to\\file.csv"))
        using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
        {
            csv.Context.RegisterClassMap<FooMap>();
            csv.GetRecords<Foo>().ToList().Dump();
        }
    }

    public class Foo
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public Json Json { get; set; }
    }

    public class Json
    {
        public string Foo { get; set; }
    }

    public class FooMap : ClassMap<Foo>
    {
        public FooMap()
        {
            Map(m => m.Id);
            Map(m => m.Name);
            Map(m => m.Json).Convert(args => JsonConvert.DeserializeObject<Json>(args.Row.GetField("Json")));
        }
    }

## Writing

###### Example

    void Main()
    {
    	var records = new List<Foo>
    	{
    		new Foo { Id = 1, Name = "one" }
    	};

    	using (var writer = new StreamWriter("path\\to\\file.csv"))
    	using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
    	{
    		csv.Context.RegisterClassMap<FooMap>();
    		csv.WriteRecords(records);

    		writer.ToString().Dump();
    	}
    }

    public class Foo
    {
    	public int Id { get; set; }
    	public string Name { get; set; }
    	public Json Json { get; set; }
    }

    public class Json
    {
    	public string Foo { get; set; }
    }

    public class FooMap : ClassMap<Foo>
    {
    	public FooMap()
    	{
    		Map(m => m.Id);
    		Map(m => m.Name);
    		Map(m => m.Json).Convert(args => JsonConvert.SerializeObject(args.Row));
    	}
    }

###### Output

    Id,Name,Json
    1,one,"{""Id"":1,""Name"":""one"",""Json"":null}"