Az ABC Corp minden alkalmazottja korlátlan üzemanyag-juttatást kap. Az alkalmazottaknak minden tankolás alkalmával be kell küldeniük egy bejegyzést. A bejegyzéseket ugyanahhoz a JSON-fájlhoz fűzik hozzá, és a hónap végén dolgozzák fel őket.
A digitális üzemeltetési csapat tagjaként a feladatod, hogy beolvasd ezt a JSON-fájlt, és az eredményeket egy másik JSON-fájlba írd. A kimeneti fájlnak minden alkalmazotthoz egy bejegyzést kell tartalmaznia a következő adatokkal:
Két string argumentumot kapsz.
A bemeneti JSON-fájl JSON-objektumok tömbjét tartalmazza. Minden JSON-objektum a következő formájú.
{
"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;
|};
A feladatod, hogy a JSON-bemenetet a következő JSON-formátumra alakítsd, és a tartalmat a megadott elérési útra írd. A kimeneti fájlnak minden alkalmazotthoz egy bejegyzést kell tartalmaznia, az employeeId szerint növekvő sorrendbe rendezve.
{
"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: 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 modult. 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;
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Ballerina nyelvet 60 feladat segítségével, valódi emberi mentorálással, mindez ingyen.