Todos os desafios
Fácil 0 resolvidos 0% de aceitação

Montar um objeto JSON

Transforme chaves e valores em uma string de objeto JSON, escapando aspas e barras invertidas corretamente.

O que você vai aprender

  • Escrever pares chave-valor na sintaxe JSON
  • Escapar aspas e barras invertidas dentro de strings
  • Juntar partes com um separador

Problema

Ver original (inglês)

JSON é o formato de texto que a maioria dos programas usa para trocar dados. Um objeto JSON é escrito como {"key": "value", ...}.

Dadas listas correspondentes de chaves e valores (tudo texto), construa a string do objeto JSON neste formato exato:

  • Comece com { e termine com }.
  • Escreva cada par como "key": "value", na ordem dada, separados por , (vírgula e espaço).
  • Dentro de uma string, escreva uma barra invertida \ como \\ e uma aspas dupla " como \". Outros caracteres permanecem como estão.

Implemente json_object_string(keys, values).

Input

keys, values: Listas do mesmo tamanho.

Output

Retorne o texto JSON. Um objeto vazio é {}.

Restrições

0 ≤ número de pares ≤ 100

Chaves e valores têm no máximo 50 caracteres imprimíveis

Exemplos

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

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

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

Saída esperada:
string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";

Explicação

Cada par vira "key": "value": {"name": "Ada", "city": "London"}.

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

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

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

Saída esperada:
string expected = "{\"quote\": \"say \\\"hi\\\"\"}";

Explicação

As aspas dentro do valor são escapadas com uma barra invertida: {"quote": "say \"hi\""}.

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

Monte cada par "key": "value" separadamente e depois junte-os.

Dica 2

Escape as barras invertidas antes das aspas para não escapar seus próprios escapes.

Dica 3

Uma entrada vazia ainda precisa das chaves: {}.

Complexidade esperada

tempo O(comprimento total), espaço extra O(comprimento total)

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.