Retour aux défis
Facile 0 résolus 0 % de réussite

Construire un objet JSON

Transformez des clés et des valeurs en une chaîne JSON d'objet, en échappant correctement les guillemets et les antislashs.

Ce que vous allez apprendre

  • Écrire des paires clé-valeur en syntaxe JSON
  • Échapper guillemets et barres obliques inverses dans les chaînes
  • Joindre des morceaux avec un séparateur

Problème

JSON est le format texte que la plupart des programmes utilisent pour échanger des données. Un objet JSON s'écrit {"key": "value", ...}.

Étant donné des listes correspondantes de clés et de valeurs (tout en texte), construisez la chaîne JSON d'objet dans ce format exact :

  • Commencez par { et terminez par }.
  • Écrivez chaque paire sous la forme "key": "value", dans l'ordre donné, séparée par , (virgule et espace).
  • À l'intérieur d'une chaîne, écrivez un antislash \ comme \\ et un guillemet double " comme \". Les autres caractères restent tels quels.

Implémentez json_object_string(keys, values).

Input

keys, values: Listes de même longueur.

Output

Retournez le texte JSON. Un objet vide est {}.

Contraintes

0 ≤ nombre de paires ≤ 100

Les clés et valeurs ont au plus 50 caractères imprimables

Exemples

Exemple 1
Entrée :
keys = ["name", "city"]
values = ["Ada", "London"]

Sortie attendue :
expected = "{\"name\": \"Ada\", \"city\": \"London\"}"
Entrée :
std::vector<std::string> keys = {"name", "city"};
std::vector<std::string> values = {"Ada", "London"};

Sortie attendue :
std::string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Entrée :
string[] keys = new string[] {"name", "city"};
string[] values = new string[] {"Ada", "London"};

Sortie attendue :
string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";

Explication

Chaque paire devient "key": "value" : {"name": "Ada", "city": "London"}.

Exemple 2
Entrée :
keys = ["quote"]
values = ["say \"hi\""]

Sortie attendue :
expected = "{\"quote\": \"say \\\"hi\\\"\"}"
Entrée :
std::vector<std::string> keys = {"quote"};
std::vector<std::string> values = {"say \"hi\""};

Sortie attendue :
std::string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Entrée :
string[] keys = new string[] {"quote"};
string[] values = new string[] {"say \"hi\""};

Sortie attendue :
string expected = "{\"quote\": \"say \\\"hi\\\"\"}";

Explication

Les guillemets à l'intérieur de la valeur sont échappés avec un antislash : {"quote": "say \"hi\""}.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Construisez chaque paire "key": "value" séparément, puis joignez-les.

Indice 2

Échappez les barres obliques inverses avant les guillemets pour ne pas échapper vos propres échappements.

Indice 3

Une entrée vide a quand même besoin des accolades : {}.

Complexité attendue

temps O(longueur totale), espace supplémentaire O(longueur totale)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.