Problem
JSON ist das Textformat, das die meisten Programme zum Austausch von Daten verwenden. Ein JSON-Objekt wird als {"key": "value", ...} geschrieben.
Gegeben sind passende Listen von Schlüsseln und Werten (alles Text), baue den JSON-Objekt-String in genau diesem Format:
- Beginne mit
{und ende mit}. - Schreibe jedes Paar als
"key": "value", in der gegebenen Reihenfolge, getrennt durch,(Komma und Leerzeichen). - Schreibe innerhalb eines Strings einen Backslash
\als\\und ein doppeltes Anführungszeichen"als\". Andere Zeichen bleiben unverändert.
Implementiere json_object_string(keys, values).
Eingabe
keys, values: Listen gleicher Länge.
Ausgabe
Gib den JSON-Text zurück. Ein leeres Objekt ist {}.
Einschränkungen
0 ≤ Anzahl der Paare ≤ 100
Schlüssel und Werte haben höchstens 50 druckbare Zeichen
Beispiele
Eingabe:
keys = ["name", "city"]
values = ["Ada", "London"]
Erwartete Ausgabe:
expected = "{\"name\": \"Ada\", \"city\": \"London\"}"
Eingabe:
std::vector<std::string> keys = {"name", "city"};
std::vector<std::string> values = {"Ada", "London"};
Erwartete Ausgabe:
std::string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Eingabe:
string[] keys = new string[] {"name", "city"};
string[] values = new string[] {"Ada", "London"};
Erwartete Ausgabe:
string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Erläuterung
Jedes Paar wird zu "key": "value": {"name": "Ada", "city": "London"}.
Eingabe:
keys = ["quote"]
values = ["say \"hi\""]
Erwartete Ausgabe:
expected = "{\"quote\": \"say \\\"hi\\\"\"}"
Eingabe:
std::vector<std::string> keys = {"quote"};
std::vector<std::string> values = {"say \"hi\""};
Erwartete Ausgabe:
std::string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Eingabe:
string[] keys = new string[] {"quote"};
string[] values = new string[] {"say \"hi\""};
Erwartete Ausgabe:
string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Erläuterung
Die Anführungszeichen im Wert werden mit einem Backslash maskiert: {"quote": "say \"hi\""}.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Baue jedes "key": "value"-Paar einzeln und verbinde sie dann.
Hinweis 2
Maskiere Backslashes vor den Anführungszeichen, damit du deine eigenen Escapes nicht noch einmal maskierst.
Hinweis 3
Auch eine leere Eingabe braucht die Klammern: {}.
Erwartete Komplexität
Zeit O(Gesamtlänge), zusätzlicher Speicher O(Gesamtlänge)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.