Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Ein JSON-Objekt bauen

Wandle Schlüssel und Werte in einen JSON-Objekt-String um und escapiere dabei Anführungszeichen und Backslashes korrekt.

Das lernst du

  • Schlüssel-Wert-Paare in JSON-Syntax schreiben
  • Anführungszeichen und Backslashes in Strings maskieren
  • Teile mit einem Trennzeichen verbinden

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

Beispiel 1
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"}.

Beispiel 2
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.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.