Torna alle sfide
Facile 0 risolte 0% di accettazione

Costruire un oggetto JSON

Trasforma chiavi e valori in una stringa di oggetto JSON, facendo l'escape corretto di virgolette e backslash.

Cosa imparerai

  • Scrivere coppie chiave-valore con la sintassi JSON
  • Fare l'escape di virgolette e backslash nelle stringhe
  • Unire parti con un separatore

Problema

JSON è il formato testuale che la maggior parte dei programmi usa per scambiare dati. Un oggetto JSON si scrive come {"key": "value", ...}.

Date liste corrispondenti di chiavi e valori (tutti testo), costruisci la stringa dell'oggetto JSON in questo formato esatto:

  • Inizia con { e termina con }.
  • Scrivi ogni coppia come "key": "value", nell'ordine dato, separata da , (virgola e spazio).
  • Dentro una stringa, scrivi un backslash \ come \\ e una doppia virgoletta " come \". Gli altri caratteri restano invariati.

Implementa json_object_string(keys, values).

Ingresso

keys, values: Liste della stessa lunghezza.

Uscita

Restituisci il testo JSON. Un oggetto vuoto è {}.

Vincoli

0 ≤ numero di coppie ≤ 100

Chiavi e valori hanno al massimo 50 caratteri stampabili

Esempi

Esempio 1
Input:
keys = ["name", "city"]
values = ["Ada", "London"]

Output atteso:
expected = "{\"name\": \"Ada\", \"city\": \"London\"}"
Input:
std::vector<std::string> keys = {"name", "city"};
std::vector<std::string> values = {"Ada", "London"};

Output atteso:
std::string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Input:
string[] keys = new string[] {"name", "city"};
string[] values = new string[] {"Ada", "London"};

Output atteso:
string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";

Spiegazione

Ogni coppia diventa "key": "value": {"name": "Ada", "city": "London"}.

Esempio 2
Input:
keys = ["quote"]
values = ["say \"hi\""]

Output atteso:
expected = "{\"quote\": \"say \\\"hi\\\"\"}"
Input:
std::vector<std::string> keys = {"quote"};
std::vector<std::string> values = {"say \"hi\""};

Output atteso:
std::string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Input:
string[] keys = new string[] {"quote"};
string[] values = new string[] {"say \"hi\""};

Output atteso:
string expected = "{\"quote\": \"say \\\"hi\\\"\"}";

Spiegazione

Le virgolette dentro il valore vengono escape con un backslash: {"quote": "say \"hi\""}.

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Costruisci ogni coppia "key": "value" separatamente, poi uniscile.

Suggerimento 2

Fai l'escape dei backslash prima delle virgolette, così non rifai l'escape dei tuoi escape.

Suggerimento 3

Anche un input vuoto ha bisogno delle graffe: {}.

Complessità attesa

tempo O(lunghezza totale), spazio aggiuntivo O(lunghezza totale)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.