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