Dynamiczne generowanie JSON z każdą wartością wejściową przy użyciu jQuery


Mam sytuację, w której chciałbym odczytać niektóre dane z formatu JSON przez PHP, jednak mam pewne problemy ze zrozumieniem, jak powinienem skonstruować obiekt JavaScript, aby dynamicznie generować format JSON.
Mój skrypt wygląda tak:
<input title="QA" type="text" class="email">
<input title="PROD" type="text" class="email">
<input title="DEV" type="text" class="email">

Kod Javascript, który mam do tej pory, przechodzi przez wszystkie dane wejściowe, pobiera dane, jednak od tej pory nie mogę się dowiedzieć, jak sobie z tym poradzić.
var taskArray = {};$("input[class=email]").each(function() {
var id = $(this).attr("title");
var email = $(this).val();//how to create JSON?});

Chciałbym, jeśli to możliwe, uzyskać następujący wynik.
[{title: QA, email: 'a@a.com'}, {title: PROD, email: 'b@b.com'},{title: DEV, email: 'c@c.com'}]

Gdzie e-mail jest pozyskiwany przez wartość pola wejściowego.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Podobne do tego:
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);
}


Wyjaśnienie

Szukasz
tablicy obiektów
. Więc tworzysz pustą tablicę. Utwórz obiekt dla każdego
input
, używając „title” i „email” jako kluczy. Następnie dodajesz każdy z obiektów do tablicy.
Jeśli potrzebujesz łańcucha, zrób to
jsonString = JSON.stringify(jsonObj);


Przykładowe dane wyjściowe

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

Anonimowy użytkownik

Potwierdzenie od:

Nie sądzę, aby można było zamienić obiekty JavaScript w ciągi JSON, używając tylko jQuery, zakładając, że chcesz, aby ciąg JSON był wyjściowy.
W zależności od docelowych przeglądarek możesz użyć funkcji
JSON.stringify
do generowania ciągów JSON.
Cm

. http://www.json.org/js.html
http://www.json.org/js.html
aby uzyskać więcej informacji, można tam również znaleźć parser JSON dla starszych przeglądarek, które natywnie nie obsługują obiektu JSON.
W Twoim przypadku:
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);
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Może to pomaga, wolałbym czysty JS wszędzie tam, gdzie to możliwe, znacznie poprawia wydajność, ponieważ nie będziesz mieć wielu wywołań funkcji 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);
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

to samo z powyższego przykładu - jeśli szukasz po prostu json (nie tablicy obiektów), po prostu użyj
function getJsonDetails() {
item = {}
item ["token1"] = token1val;
item ["token2"] = token1val;
return item;
}
console.log(JSON.stringify(getJsonDetails()))

to wyjście zostanie wydrukowane jako (poprawny json)
{ 
"token1":"samplevalue1",
"token2":"samplevalue2"
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się