Κάθε υπάλληλος της ABC Corp λαμβάνει απεριόριστο επίδομα καυσίμων. Οι υπάλληλοι πρέπει να στέλνουν μια καταγραφή κάθε φορά που γεμίζουν τα οχήματά τους. Αυτές οι καταγραφές προστίθενται στο ίδιο αρχείο JSON και υποβάλλονται σε επεξεργασία στο τέλος του μήνα.
Ως μέλος της ομάδας ψηφιακών λειτουργιών, το καθήκον σου είναι να διαβάσεις αυτό το αρχείο JSON και να γράψεις τα αποτελέσματα σε ένα άλλο αρχείο JSON. Το αρχείο εξόδου πρέπει να περιέχει μια καταχώριση για κάθε υπάλληλο με τις ακόλουθες λεπτομέρειες:
Σου δίνονται δύο ορίσματα string.
Το αρχείο JSON εισόδου περιέχει έναν πίνακα από αντικείμενα JSON. Κάθε αντικείμενο JSON έχει την ακόλουθη μορφή.
{
"type": "array",
"items": {
"type": "object",
"properties": {
"employeeId": {
"type": "integer"
},
"odometerReading": {
"type": "integer"
},
"gallons": {
"type": "number"
},
"gasPrice": {
"type": "number"
}
},
"required": [
"employeeId",
"odometerReading",
"gallons",
"gasPrice"
]
}
}
// Ballerina record type definition
type FillUpEntry record {|
int employeeId;
int odometerReading;
decimal gallons;
decimal gasPrice;
|};
Το καθήκον σου είναι να μετασχηματίσεις την είσοδο JSON στην ακόλουθη μορφή JSON και να γράψεις το περιεχόμενο στη διαδρομή που σου δίνεται. Το αρχείο εξόδου πρέπει να περιέχει μια καταχώριση για κάθε υπάλληλο, ταξινομημένη σε αύξουσα σειρά κατά employeeId.
{
"type": "array",
"items": {
"type": "object",
"properties": {
"employeeId": {
"type": "integer"
},
"gasFillUpCount": {
"type": "integer"
},
"totalFuelCost": {
"type": "number"
},
"totalGallons": {
"type": "number"
},
"totalMilesAccrued": {
"type": "integer"
}
},
"required": [
"employeeId",
"gasFillUpCount",
"totalFuelCost",
"totalGallons",
"totalMilesAccrued"
]
}
}
// Ballerina record type definition
type EmployeeFillUpSummary record {|
int employeeId;
int gasFillUpCount;
decimal totalFuelCost;
decimal totalGallons;
int totalMilesAccrued;
|};
n στο αρχείο JSON εισόδου: 0 <= n <= 1000example01_input.json
[
{
"employeeId": 2312,
"odometerReading": 230,
"gallons": 18.561,
"gasPrice": 4.56
},
{
"employeeId": 2312,
"odometerReading": 500,
"gallons": 19.345,
"gasPrice": 4.89
}
]
example01_output.json
[
{
"employeeId": 2312,
"gasFillUpCount": 2,
"totalFuelCost": 179.23521,
"totalGallons": 37.906,
"totalMilesAccrued": 270
}
]
example02_input.json
[
{
"employeeId": 2413,
"odometerReading": 4089,
"gallons": 21.682,
"gasPrice": 3.46
},
{
"employeeId": 3423,
"odometerReading": 6582,
"gallons": 15.248,
"gasPrice": 4.56
},
{
"employeeId": 2413,
"odometerReading": 4127,
"gallons": 4.221,
"gasPrice": 3.40
},
{
"employeeId": 2413,
"odometerReading": 4349,
"gallons": 11.192,
"gasPrice": 4.10
},
{
"employeeId": 3423,
"odometerReading": 6767,
"gallons": 8.696,
"gasPrice": 3.34
},
{
"employeeId": 2413,
"odometerReading": 4547,
"gallons": 9.197,
"gasPrice": 2.90
}
]
example02_output.json
[
{
"employeeId": 2413,
"gasFillUpCount": 4,
"totalFuelCost": 161.92962,
"totalGallons": 46.292,
"totalMilesAccrued": 458
},
{
"employeeId": 3423,
"gasFillUpCount": 2,
"totalFuelCost": 98.57552,
"totalGallons": 23.944,
"totalMilesAccrued": 185
}
]
ballerina/io module για να διαβάζεις και να γράφεις αρχεία JSON. json jsonPayload = {id: "2", title: "Jeru", artist: "Gerry Mulligan", price: 17.99};
// Using cloneWithType
Album album1 = check jsonPayload.cloneWithType();
io:println(album1);
// Using fromJsonWithType
Album album2 = check jsonPayload.fromJsonWithType();
io:println(album2);
Album {id, title, artist, price} = album1;
io:println(id);
io:println(title);
function cfr(int deaths, int cases) returns decimal => <decimal>deaths / <decimal>cases * 100;
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Ballerina με 60 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.