From c6b605730a8eef2fd86bfdd3fbb791da9a40ca25 Mon Sep 17 00:00:00 2001 From: Sasindu Alahakoon Date: Tue, 24 Sep 2024 12:27:14 +0530 Subject: [PATCH] Add bbe for convert csv string into records --- .../csv_string_to_record_array.bal | 29 +++++++++++++++++++ .../csv_string_to_record_array.md | 7 +++++ .../csv_string_to_record_array.metatags | 2 ++ .../csv_string_to_record_array.out | 3 ++ examples/index.json | 14 +++++++++ 5 files changed, 55 insertions(+) create mode 100644 examples/csv-string-to-record-array/csv_string_to_record_array.bal create mode 100644 examples/csv-string-to-record-array/csv_string_to_record_array.md create mode 100644 examples/csv-string-to-record-array/csv_string_to_record_array.metatags create mode 100644 examples/csv-string-to-record-array/csv_string_to_record_array.out diff --git a/examples/csv-string-to-record-array/csv_string_to_record_array.bal b/examples/csv-string-to-record-array/csv_string_to_record_array.bal new file mode 100644 index 0000000000..55132dfdb1 --- /dev/null +++ b/examples/csv-string-to-record-array/csv_string_to_record_array.bal @@ -0,0 +1,29 @@ +import ballerina/data.csv; +import ballerina/io; + +type Book record { + string name; + string author; + decimal price; + string publishedDate; +}; + +type BriefBookInfo record {| + string name; + string author; +|}; + +public function main() { + string csvString = string `name,author,price,publishedDate + Effective Java,Joshua Bloch,45.99,2018-01-01 + Clean Code,Robert C. Martin,37.50,2008-08-01`; + + // Convert the CSV string to a record array + Book[]|csv:Error bookRecords = csv:parseString(csvString); + io:println(bookRecords); + + // Convert the CSV string to a record array with data projection. + // In here only the name and author fields are selected. + BriefBookInfo[]|csv:Error briefBookRecords = csv:parseString(csvString); + io:println(briefBookRecords); +} diff --git a/examples/csv-string-to-record-array/csv_string_to_record_array.md b/examples/csv-string-to-record-array/csv_string_to_record_array.md new file mode 100644 index 0000000000..80b1332125 --- /dev/null +++ b/examples/csv-string-to-record-array/csv_string_to_record_array.md @@ -0,0 +1,7 @@ +# Convert CSV string into Ballerina record array + +The ballerina `data.csv` library offers a range of functions for converting CSV strings into Ballerina record arrays, enabling developers to parse CSV string data into structured records while allowing for the selection of specific fields within the expected record array. + +::: code csv_string_to_record_array.bal ::: + +::: out csv_string_to_record_array.out ::: diff --git a/examples/csv-string-to-record-array/csv_string_to_record_array.metatags b/examples/csv-string-to-record-array/csv_string_to_record_array.metatags new file mode 100644 index 0000000000..d9264c6965 --- /dev/null +++ b/examples/csv-string-to-record-array/csv_string_to_record_array.metatags @@ -0,0 +1,2 @@ +description: This BBE demonstrates conversion of CSV string into a Ballerina record array with and without data projection. +keywords: ballerina, ballerina by example, bbe, csv, csv string, record, record array, parseString, csv data module, data.csv, data projection diff --git a/examples/csv-string-to-record-array/csv_string_to_record_array.out b/examples/csv-string-to-record-array/csv_string_to_record_array.out new file mode 100644 index 0000000000..1422cf803f --- /dev/null +++ b/examples/csv-string-to-record-array/csv_string_to_record_array.out @@ -0,0 +1,3 @@ +$ bal run csv_string_to_record_array.bal +[{"name":"Effective Java","author":"Joshua Bloch","price":45.99,"publishedDate":"2018-01-01"},{"name":"Clean Code","author":"Robert C. Martin","price":37.5,"publishedDate":"2008-08-01"}] +[{"name":"Effective Java","author":"Joshua Bloch"},{"name":"Clean Code","author":"Robert C. Martin"}] diff --git a/examples/index.json b/examples/index.json index 6a45c8a9f1..58254f438b 100644 --- a/examples/index.json +++ b/examples/index.json @@ -4700,6 +4700,20 @@ } ] }, + { + "title": "CSV data", + "column": 3, + "category": "Common libraries", + "samples": [ + { + "name": "Convert CSV string into a record array", + "url": "csv-string-to-record-array", + "verifyBuild": true, + "verifyOutput": true, + "isLearnByExample": true + } + ] + }, { "title": "Constraint", "column": 3,