.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Text;
using ChoETL;
using System.Linq;

public class Program
{
	public static void Main()
	{
		string json = @"
[
    {
        ""firstName"": ""John"",
        ""lastName"": ""Smith"",
        ""age"": 25,
        ""address"": {
            ""streetAddress"": ""21 2nd Street"",
            ""city"": ""New York"",
            ""state"": ""NY"",
            ""postalCode"": ""10021""
        },
        ""phoneNumber"": [
            {
                ""type"": ""home"",
                ""number"": ""212 555-1234""
            },
            {
                ""type"": ""fax"",
                ""number"": ""646 555-4567""
            }
        ]
    },
    {
        ""firstName"": ""Tom"",
        ""lastName"": ""Mark"",
        ""age"": 50,
        ""address"": {
            ""streetAddress"": ""10 Main Street"",
            ""city"": ""Edison"",
            ""state"": ""NJ"",
            ""postalCode"": ""08837""
        },
        ""phoneNumber"": [
            {
                ""type"": ""home"",
                ""number"": ""732 555-1234""
            },
            {
                ""type"": ""fax"",
                ""number"": ""609 555-4567""
            }
        ]
    }
]";
	
		StringBuilder csv = new StringBuilder();
		using (var w = new ChoCSVWriter(csv).WithFirstLineHeader())
		{
			using (var r = ChoJSONReader.LoadText(json)
			)
			{
				w.Write(r.Select(i => new {
					FirstName = i.firstName,
					LastName = i.lastName,
					Age = i.age,
					StreetAddress = i.address.streetAddress,
					City = i.address.city,
					State = i.address.state,
					PostalCode = i.address.postalCode,
					Phone = i.phoneNumber[0].number,
					Fax = i.phoneNumber[1].number
				}));
			}
		}
		Console.WriteLine(csv.ToString());
	}

}
;