BishnuKarki Ответов: 2

Как преобразовать строку json в объект в jquery


Привет Ребята,

У меня есть такой код:

ВАР controlNameAndValues = [
{ controlName: 'txt1', controlValue: 'yellow' },
{ controlName: 'txt2', controlValue: 'blue' },
{ controlName: 'txt3', controlValue: 'red' }
];

Это работает прекрасно, но проблема в том, что теперь мой controlNameAndValues является динамическим. Итак, как я могу преобразовать динамические controlNameAndValues в работу, подобную приведенному выше жестко закодированному значению. Приведенный выше controlNameAndValues дает список объектов, которые имеют значения, но динамически генерируемый список объектов не имеет такого списка, как я хотел. Не могли бы вы мне помочь?

Что я уже пробовал:

//это для динамической генерации controlNameAndValue

$("введите[введите текст='']").каждый(функция () {
if ($(this). attr ("id")! = null) {
var controlName = $(this). attr ("id");
var controlValue = $ ('#' + controlName + "). val();
controlNameAndValues + = '{ controlName: '+ ' \ " + controlName +'\"+', controlValue: '+ ' \ " + controlValue +'\'}';
я++;
if (i < $("input[type= 'text']"). length)
{
controlNameAndValues += ",";
}
}
});
controlNameAndValues += "]";
controlNameAndValues = $. parseJSON(JSON. stringify(controlNameAndValues));

2 Ответов

Рейтинг:
2

Sergey Alexandrovich Kryukov

Вот как: В формате JSON.метод Parse() — JavaScript-кода.

Другой способ-это использование eval что не рекомендуется по одной веской причине: это небезопасно; строка может быть не JSON, но все же оценивать, выполнять и производить некоторые опасные побочные эффекты.

—СА


Richard Deeming

Гораздо проще избежать преобразования в первую очередь-см. Решение 2. :)

Sergey Alexandrovich Kryukov

Я согласен, но я просто ответил на вопрос на другом его уровне, потому что он был сформулирован так: как "преобразовать" строку JSON. Это все еще действительный вопрос и проблема, неразрешенная исследователем; и мой ответ все еще верен.

В то же время я полностью согласен с тем, что на многие вопросы не следует отвечать так, как они сформулированы, и следует оказывать более разумную помощь, основанную на том, что действительно нужно спрашивающему, а не на том, что он думает, что ему нужно (важное различие). Я просто не стал копаться в ней в этом случае.

—СА

Рейтинг:
0

Richard Deeming

Зачем беспокоиться? Вместо того чтобы создавать строку JSON только для того, чтобы разобрать ее обратно на объект, просто создайте объект:

var controlNameAndValues = [];

$("input[type='text'][id]").each(function () {
    controlNameAndValues.push({
        controlName: this.id,
        controlValue: $(this).val()
    });
});

// Do something with controlNameAndValues here...


Sergey Alexandrovich Kryukov

Вы правы, 5.
—СА