Jeder Mitarbeiter von ABC Corp erhält eine unbegrenzte Kraftstoffpauschale. Die Mitarbeiter müssen jedes Mal, wenn sie ihr Fahrzeug tanken, einen Datensatz einsenden. Diese Datensätze werden an dieselbe JSON-Datei angehängt und am Monatsende verarbeitet.
Als Mitglied des Teams für den digitalen Betrieb ist es deine Aufgabe, diese JSON-Datei zu lesen und die Ergebnisse in eine andere JSON-Datei zu schreiben. Die Ausgabedatei sollte für jeden Mitarbeiter einen Eintrag mit den folgenden Details enthalten:
Du erhältst zwei Argumente des Typs string.
Die JSON-Eingabedatei enthält ein Array von JSON-Objekten. Jedes JSON-Objekt hat die folgende Form.
{
"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;
|};
Deine Aufgabe ist es, die JSON-Eingabe in das folgende JSON-Format umzuwandeln und den Inhalt in den angegebenen Pfad zu schreiben. Die Ausgabedatei sollte für jeden Mitarbeiter einen Eintrag enthalten, aufsteigend sortiert nach 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 in der JSON-Eingabedatei: 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-Modul, um JSON-Dateien zu lesen und zu schreiben. 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);
return-Anweisung enthalten. function cfr(int deaths, int cases) returns decimal => <decimal>deaths / <decimal>cases * 100;
Melde dich bei Exercism an, um Ballerina mit 60 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.