Todos los desafíos
Fácil 0 resueltos 0% de aceptación

Construir un objeto JSON

Convierte claves y valores en una cadena de objeto JSON, escapando correctamente comillas y barras invertidas.

Lo que aprenderás

  • Escribir pares clave-valor con sintaxis JSON
  • Escapar comillas y barras invertidas dentro de cadenas
  • Unir partes con un separador

Problema

Ver original (inglés)

JSON es el formato de texto que la mayoría de los programas usan para intercambiar datos. Un objeto JSON se escribe como {"key": "value", ...}.

Dadas listas correspondientes de claves y valores (todo texto), construye la cadena del objeto JSON con este formato exacto:

  • Empieza con { y termina con }.
  • Escribe cada par como "key": "value", en el orden dado, separados por , (coma y espacio).
  • Dentro de una cadena, escribe una barra invertida \ como \\ y una comilla doble " como \". Los demás caracteres se mantienen igual.

Implementa json_object_string(keys, values).

Entrada

keys, values: Listas de la misma longitud.

Salida

Devuelve el texto JSON. Un objeto vacío es {}.

Restricciones

0 ≤ número de pares ≤ 100

Las claves y los valores tienen como máximo 50 caracteres imprimibles

Ejemplos

Ejemplo 1
Entrada:
keys = ["name", "city"]
values = ["Ada", "London"]

Salida esperada:
expected = "{\"name\": \"Ada\", \"city\": \"London\"}"
Entrada:
std::vector<std::string> keys = {"name", "city"};
std::vector<std::string> values = {"Ada", "London"};

Salida esperada:
std::string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Entrada:
string[] keys = new string[] {"name", "city"};
string[] values = new string[] {"Ada", "London"};

Salida esperada:
string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";

Explicación

Cada par se convierte en "key": "value": {"name": "Ada", "city": "London"}.

Ejemplo 2
Entrada:
keys = ["quote"]
values = ["say \"hi\""]

Salida esperada:
expected = "{\"quote\": \"say \\\"hi\\\"\"}"
Entrada:
std::vector<std::string> keys = {"quote"};
std::vector<std::string> values = {"say \"hi\""};

Salida esperada:
std::string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Entrada:
string[] keys = new string[] {"quote"};
string[] values = new string[] {"say \"hi\""};

Salida esperada:
string expected = "{\"quote\": \"say \\\"hi\\\"\"}";

Explicación

Las comillas dentro del valor se escapan con una barra invertida: {"quote": "say \"hi\""}.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Construye cada par "key": "value" por separado y luego únelos.

Pista 2

Escapa las barras invertidas antes que las comillas para no escapar tus propios escapes.

Pista 3

Una entrada vacía igual necesita las llaves: {}.

Complejidad esperada

tiempo O(longitud total), espacio extra O(longitud total)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.