Создание JSON динамически с каждым входным значением с помощью jquery


у меня возникла ситуация, когда я хотел бы прочитать некоторые данные из формата JSON через PHP, однако у меня возникли некоторые проблемы с пониманием того, как я должен построить объект Javascript для динамического создания формата JSON.

мой сценарий выглядит следующим образом:

<input title="QA" type="text" class="email">
<input title="PROD" type="text" class="email">
<input title="DEV" type="text" class="email">

код Javascript, который у меня есть до сих пор, проходит через каждый вход, захватывает данные, однако я не могу понять, как обрабатывать отсюда.

var taskArray = {};

$("input[class=email]").each(function() {
  var id = $(this).attr("title");
  var email = $(this).val();

  //how to create JSON?

});

Я хотел бы сделать следующее выход, если это возможно.

[{title: QA, email: 'a@a.com'}, {title: PROD, email: 'b@b.com'},{title: DEV, email: 'c@c.com'}]

где электронная почта приобретается значением поля ввода.

любой свет, пролитый на эту ситуацию, будет очень признателен!

4 67

4 ответа:

такой:

function createJSON() {
    jsonObj = [];
    $("input[class=email]").each(function() {

        var id = $(this).attr("title");
        var email = $(this).val();

        item = {}
        item ["title"] = id;
        item ["email"] = email;

        jsonObj.push(item);
    });

    console.log(jsonObj);
}

объяснение

вы ищете an array of objects. Итак, вы создаете пустой массив. Создайте объект для каждого input С помощью "название" и "электронная почта" в качестве ключей. Затем вы добавляете каждый из объектов в массив.

Если вам нужна строка, то сделать

jsonString = JSON.stringify(jsonObj);

Пример Вывода

[{"title":"QA","email":"a@b"},{"title":"PROD","email":"b@c"},{"title":"DEV","email":"c@d"}] 

Я не думаю, что вы можете превратить объекты JavaScript в строки JSON, используя только jQuery, предполагая, что вам нужна строка JSON в качестве вывода.

в зависимости от браузера который вы ориентируетесь, вы можете использовать JSON.stringify функция для создания строк JSON.

см.http://www.json.org/js.html для получения дополнительной информации вы также можете найти парсер JSON для старых браузеров, которые не поддерживают объект JSON изначально.

в вашем случае:

var array = [];
$("input[class=email]").each(function() {
    array.push({
        title: $(this).attr("title"),
        email: $(this).val()
    });
});
// then to get the JSON string
var jsonString = JSON.stringify(array);

может быть, это поможет, я бы предпочел чистый JS, где это возможно, это значительно повышает производительность, так как у вас не будет много вызовов функций JQuery.

var obj = [];
var elems = $("input[class=email]");

for (i = 0; i < elems.length; i += 1) {
    var id = this.getAttribute('title');
    var email = this.value;
    tmp = {
        'title': id,
        'email': email
    };

    obj.push(tmp);
}

вы также можете добиться этого с помощью следующего кода.

 let str = '{" + yourKey + ":'+yourValue+'}';
 str = JSON.parse(str);