Узел JS String внутри фигурных скобок

1
  // My input String
  // Could be on : true, on : false, bri : 255, etc, etc
  var inputString = 'on : true'
  console.log(inputString);
  var wrongResult = { inputString }
  console.log(wrongResult);

  // The result that I am trying to achieve
  var desiredResult = {
    on : true
  }
  console.log(desiredResult);

Запустите его: https://repl.it/LCDt/4

Я создал приведенный выше фрагмент кода, чтобы продемонстрировать проблему, с которой я столкнулся. У меня есть строка ввода, которую я получаю, которая может быть "on: true", "on: false", "bri: 250", "sat: 13" и т.д. При отправке этих данных на сервер формат, который работает, выше, как "wishResult".

Но, беря строку, такую как "on: true", в переменной и помещая ее внутри {}, всегда создается словарь с именем переменной в качестве ключа и самой строкой в качестве значения.

Может кто-нибудь объяснить, почему это так и как обойти это?

  • 0
    Вы также можете загрузить строку в виде модуля с небольшим количеством украшений на входе перед рукой. редактировать: я принял узел, я понимаю, что это большое предположение. оставлю этот комментарий на всякий случай.
Теги:

2 ответа

1
Лучший ответ

Может кто-нибудь объяснить, почему это

Поскольку синтаксис { foo } означает "Создать объект, дайте ему свойство, называемое foo, присвойте этому свойству значение переменной foo.

как обойти это

Разбор данных. Назначьте его явно.

Начните с разделения строки на : Затем удалите пустое пространство. Тогда тест является вторым значением - это число или ключевое слово. И так далее.


Это было бы легче, если бы данные, которые вы получали, были в стандартном формате. Затем вы можете использовать существующий парсер. Если у вас есть контроль над входом: измените его на действительный JSON, а затем используйте JSON.parse.

  • 0
    (Ненадежный) ярлык может быть JSON.parse('{' + inputString + '}');
  • 0
    @JaredSmith - не сработает. Символ on не окружен кавычками.
Показать ещё 4 комментария
0

Вы можете использовать JSON.parse для этого, но вам нужно накормить его действительным JSON. Вы должны иметь строку в форме:

    {"on":true}

используя JSON.parse('{"on": true}') вернет вам нужный объект.

  • 1
    Принятие чужих комментариев и публикация их в качестве собственного ответа - это слово, которое начинается с «плаг» и заканчивается «аристизмом».
  • 0
    Конечно, чувак, ты гений за этим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню