CSharp · Console
using System;
using System.Text;
using ChoETL;
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<Employee>(csv).WithFirstLineHeader())
{
using (var r = ChoJSONReader<Employee>.LoadText(json)
)
{
w.Write(r);
}
}
Console.WriteLine(csv.ToString());
}
public class Employee
{
[ChoJSONRecordField]
public string FirstName { get; set; }
[ChoJSONRecordField]
public string LastName { get; set; }
[ChoJSONRecordField]
public int Age { get; set; }
[ChoJSONRecordField(JSONPath = "$.address.streetAddress")]
public string StreetAddress { get; set; }
[ChoJSONRecordField(JSONPath = "$.address.city")]
public string City { get; set; }
[ChoJSONRecordField(JSONPath = "$.address.state")]
public string State { get; set; }
[ChoJSONRecordField(JSONPath = "$.address.postalCode")]
public string PortalCode { get; set; }
[ChoJSONRecordField(JSONPath = "$.phoneNumber[?(@.type=='home')].number")]
public string Phone { get; set; }
[ChoJSONRecordField(JSONPath = "$.phoneNumber[?(@.type=='fax')].number")]
public string Fax { get; set; }
}
}